2015-06-04 3 views
2

Это на Ruby 1.9.3 и Rails 3.2.19. Я не супер опыт с Rails. Сегодня я начал эту проблему ТОЛЬКО на нашем реальном сервере, все отлично работает на сервере разработки.Приложение Rails пытается обновить несуществующий столбец

Всякий раз, когда я пытаюсь дать публикацию модель нового теги, я получаю эту ошибку:

ActiveRecord::StatementInvalid (PG::UndefinedColumn: ERROR: column "taggings_count" does not exist 
LINE 1: UPDATE "tags" SET "taggings_count" = OALESCE("taggings_count", 0) + 1 WHERE "tags"."id" = 47: 
    app/controllers/publications_controller.rb:162:in 'block in update' 
    app/controllers/publications_controller.rb:161:in 'update' 

и линии 162 от контроллера:

def update 
    @publication = Publication.find(params[:id]) 
    if params[:clear_virtual_performances] 
     @publication.virtual_performances.each {|vp| vp.destroy} 
    end 

    if media_id = params["selected_media"] 
     pub_ids = @publication.publication_media_ids 
     PublicationMedia.update(@publication.publication_media_ids, [{:selected => false}] * pub_ids.length) 
     PublicationMedia.update(media_id, :selected => true) 
    end 

    respond_to do |format| 
     if @publication.update_attributes(params[:publication]) // <------------------- 
     expire_fragments 
     flash[:notice] = 'Publication was successfully updated.' 
     format.html { redirect_to(:action => 'show') } 
     format.xml { head :ok } 
     else 
     load_extra_vars_for_edit_form 
         Category.in_slug(params[:default_category]) 
     format.html { render :action => "edit" } 
     format.xml { render :xml => @publication.errors, 
          :status => :unprocessable_entity } 
     end 
    end 
    end 

Однако колонка «taggings_count» не существует в тегах, и я не знаю, почему он хотел бы обновить его в первую очередь. На самом деле, таблица имеет на столбцы: идентификатор, имя, позиция, category_id и tag_group_id. Вот модель тега:

class Tag < ActiveRecord::Base 
    has_many :taggings 
    belongs_to :category 
    belongs_to :tag_group 

    attr_accessible :name, :position, :category_id, :tag_group_id 
end 

Если есть дополнительная информация, которую я должен дать, сообщите мне, пожалуйста, дайте мне знать; очень важно, чтобы мы зафиксировали это как можно скорее. Все, что мне нужно, это ошибка, которой не должно быть, даже если это означает создание фиктивного столбца или что-то в этом роде.

+0

Пожалуйста, разместите соответствующий код 'form'. – Pavan

ответ

1

Я думаю, у вас есть атрибут counter_cache, определенный в Tagging, что-то вроде belongs_to :publication, counter_cache: true. Это приводит к тому, что счетчик автоматически увеличивается.

Вы можете либо удалить counter_cache: true, либо выполнить миграцию, чтобы добавить столбец.

+0

Ну, не было counter_cache довольно странно, и даже добавление одного и установка его на false не сработало. Однако создание столбца с помощью миграции отлично работало. Благодаря тонну! – noodleboy347

+0

Вы используете драгоценный камень, как act_as_taggable_on? Возможно, ваш класс Taggable унаследован от того, что имеет объявление. – mahemoff

+1

Да, действительно! Вероятно, с этого момента возникла проблема; драгоценный камень, вероятно, оставался деинсталлированным в течение нескольких месяцев до вчерашнего дня, когда я запускал установку пакета. Благодаря! – noodleboy347

Смежные вопросы