我在位置模型中有两列,它们都应该与用户模型相关联("created_by"列和"updated_by"列)。
我的"显示"视图的相关部分目前如下所示:
<p>
Created on <%= @location.created_at %> by <%= @location.created_by %><br />
Last updated on <%= @location.updated_at %> by <%= @location.updated_by %>
</p>
。这显然只是给了我分别放在"created_by"和"updated_by"中的 ID。
我尝试了以下关联:
class Location < ActiveRecord::Base
belongs_to :user, :foreign_key => "created_by"
belongs_to :user, :foreign_key => "updated_by"
end
。在我看来:
<p>
Created on <%= @location.created_at %> by <%= @location.user.name %><br />
Last updated on <%= @location.updated_at %> by <%= @location.user.name %>
</p>
。但这只会抛出一个"位置中的 NoMethodError #show - nil:NilClass 的未定义方法'name' "
(*奇怪的是,如果"created_by"和"updated_by"用户碰巧相同,它确实会在两个地方显示正确的用户名*)
如何在单个模型中有两个单独的外键,以相同的方式与相同的其他模型关联?
试试这个
class Location < ActiveRecord::Base
belongs_to :user_created,:class_name=>"User", :foreign_key => "created_by"
belongs_to :user_updated,:class_name=>"User", :foreign_key => "updated_by"
end
并申请
@location.user_created.name and @location.user_updated.name
如果使用 @location.update_by.name 和 @location.created_by.name 怎么办?