Ruby on rails - 如何在单个模型中有两个单独的外键,它们以相同的方式与相同的其他模型相关联



我在位置模型中有两列,它们都应该与用户模型相关联("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 怎么办?

相关内容

  • 没有找到相关文章

最新更新