0

我有两个文件。

部落.rb

class Clans < ActiveRecord::Base
  belongs_to :User
end

用户.rb

class User < ActiveRecord::Base
  has_one :Clan
end

我也有两个 mysql 表。

氏族: id | 姓名 | 前缀 | 描述 | 用户身份

用户: id | 用户名 | 密码 | 电子邮件 | 绑定代码

clans.user_id 是部落首领的 users.id。

在我的代码中,我可以在 show.html.erb 中使用以下内容,它给了我氏族名称。

<%= Clans.find(params[:id]).name %>

但我希望能够做到: Clans.find(params[:id]).leader.(users fields) 示例:

<%= Clans.find(params[:id]).leader.username %>

我怎样才能做到这一点?

4

3 回答 3

1
class Clan < ActiveRecord::Base
  belongs_to :leader, :class_name => "User", :foreign_key => "user_id"
end

class User < ActiveRecord::Base
  has_one :clan
end

注意类从ClanstoClan变化和关联从has_one :Clanto变化has_one :clan

于 2013-10-25T13:54:01.203 回答
1

有两种方法可以实现这一目标:

belongs_to :leader, :class_name=>"User", :foreign_key=>"user_id"

或者

belongs_to :user
delegate :leader, :to=>:user

注意:后一个版本仍然允许您执行clan.user, 以及clan.leader.

于 2013-10-25T13:57:38.517 回答
0

belongs_to :user不是belongs_to :User

同样的问题Clans

于 2013-10-25T13:53:40.707 回答