PG :: UndefinedColumn:错误:列photos.attachable_type不存在

时间:2013-11-29 01:55:15

标签: ruby-on-rails ruby ruby-on-rails-4 carrierwave

所以,我跟着this tutorial但是将@article与current_user或(我的用户模型)交换,并且:附件:照片或我的照片模型。

我会说哪一点可能会有所帮助,我不确定他为什么引用可附加物?他不应该引用文章吗?或者在我的情况下用户?

我收到了这个错误:

PG::UndefinedColumn: ERROR:  column photos.attachable_type does not exist
LINE 1: ..."photos"  WHERE "photos"."attachable_id" = $1 AND "photos"."...
                                                             ^
: SELECT "photos".* FROM "photos"  WHERE "photos"."attachable_id" = $1 AND "photos"."attachable_type" = $2

我的表格摘要:

<div class="tab-pane" id="tab2">                                                                                                            
                  <%= nested_form_for current_user, :html=>{:multipart => true } do |f| %>                                                                    
                    <%= f.fields_for :photos do |p|  %>                                                                                                       
                    <p>                                                                                                                                       
                    <%= p.label :file %><br />                                                                                                               
                    <%= p.file_field :file %>                                                                                                                
                    </p>                                                                                                                                      
                    <%= p.link_to_remove "Remove this attachment" %>                                                                                          
                    <% end %>                                                                                                                                 
                    <%= f.link_to_add "Add attachment", :photos %>                                                                                            
                    <p><%= f.submit %></p>                                                                                                                    
                    <% end %>                                                                                                                                 
                  </div>        

user.rb代码段

has_many :photos, as: :attachable
  accepts_nested_attributes_for :photos

photos.rb full

class Photo < ActiveRecord::Base
  attr_accessible :file

  belongs_to :attachable, :polymorphic => true

  mount_uploader :file, FileUploader
end

1 个答案:

答案 0 :(得分:3)

您的照片模型belongs_to :attachable作为多态关联,这意味着它需要两列 - :attachable_type(字符串)和:attachable_id(整数)。例如,如果用户ID#1有照片,则照片的attachable_type为“User”,attachable_id为1。

如果您还没有,则需要创建迁移以将这些字段添加到Photo模型中。您可以通过(在迁移中)执行此操作:

change_table :photos do |t|
  t.references :attachable, polymorphic: true
end