Ruby on rails Rails 3.2:使用具有非标准外键名的部分集合
我使用的是Rails 3.2。我有一个可交付的模型:Ruby on rails Rails 3.2:使用具有非标准外键名的部分集合,ruby-on-rails,ruby-on-rails-3.2,Ruby On Rails,Ruby On Rails 3.2,我使用的是Rails 3.2。我有一个可交付的模型: class Deliverable < ActiveRecord::Base # omitting attr_accessibles # omitting validations belongs_to :owner, class_name: "User", foreign_key: "owner_id" belongs_to :project belongs_to :event end 这是index.html.e
class Deliverable < ActiveRecord::Base
# omitting attr_accessibles
# omitting validations
belongs_to :owner, class_name: "User", foreign_key: "owner_id"
belongs_to :project
belongs_to :event
end
这是index.html.erb
:
<h1>Calendar</h1>
<%= render partial: "writer", collection: @writers %>
<h3><%= "#{writer.first_name} #{writer.last_name} %></h3>
<%= render partial: "writer_deliverables", collection: writer.deliverables %>
test
这是\u writer\u deliveries.html.erb
:
<h1>Calendar</h1>
<%= render partial: "writer", collection: @writers %>
<h3><%= "#{writer.first_name} #{writer.last_name} %></h3>
<%= render partial: "writer_deliverables", collection: writer.deliverables %>
test
问题出在\u writer.html.erb
中,由于非标准外键,当它试图呈现集合writer.deliveries
时,出现以下错误:
PG::UndefinedColumn: ERROR: column deliverables.user_id does not exist
LINE 1: ...ELECT "deliverables".* FROM "deliverables" WHERE "deliverab...
^
: SELECT "deliverables".* FROM "deliverables" WHERE "deliverables"."user_id" = 2
我怎样才能告诉Rails外键列名实际上是
owner\id
?哦,是的,我在发布五分钟后就知道了。我需要在我的用户模型中添加一个外键,如下所示:
class User < ActiveRecord::Base
# omitting attr_accessibles
# omitting validations
has_and_belongs_to_many :projects #writers assigned to the project
has_and_belongs_to_many :projects, join_table: "disclosed_users_projects" #users who have been disclosed on the project
has_many :deliverables, foreign_key: "owner_id"
end
class用户