我在位置模型中有两列应该与用户模型相关联('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 - undefined method`name'为nil:NilClass”
(*奇怪的是,如果'created_by'和'updated_by'用户恰好相同*,它会在两个地方显示正确的用户名称。)
如何在一个模型中有两个单独的外键,它们以相同的方式与同一个模型相关联?
答案 0 :(得分:2)
试试这个
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
答案 1 :(得分:0)
如果您使用@ location.updated_by.name和@ location.created_by.name,该怎么办?