2013-10-25 36 views
0

我有两个文件。Ruby on rails协会不工作

clans.rb

class Clans < ActiveRecord::Base 
    belongs_to :User 
end 

user.rb

class User < ActiveRecord::Base 
    has_one :Clan 
end 

我也有两个MySQL表。

部落: id |名称|前缀|描述| user_id

users: id |用户名|密码|电子邮件| bindcode

clans.user_id是族长的users.id。

在我的代码中,我可以在show.html.erb中使用以下代码,它给了我部族的名字。

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

但我希望能够做到:Clans.find(PARAMS [:编号])的领导者(用户字段) 例:

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

我怎样才能做到这一点?

+0

您需要将您的用户属性命名为'leader'。 –

回答

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

class User < ActiveRecord::Base 
    has_one :clan 
end 

通知从ClansClan和 协会更改类变化从has_one :Clanhas_one :clan

+0

谢谢,这实现了我想要的= D – Mike

0

belongs_to :userbelongs_to :User

Clans

+1

这解决了它,解释了为什么?我真的不明白这一点。 – Mike

1

有两种方法可以实现同样的问题:

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

或者

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

注:后一个版本将仍然允许你这样做clan.user,以及clan.leader