与Same model Rail 3有两个has_many关联

时间:2011-03-24 12:00:34

标签: ruby-on-rails-3 associations has-many

嗨,我非常初学铁路。我有一个问题的建议将不胜感激。 我有两个模型“用户”和“资产” “资产”由“用户”创建,资产“可以分配给”用户“模式

Asset { id,name,creator_id,assigned_to_id,price,...}

User{ id,name,....}

现在在资产模型类关联中

class Asset < ActiveRecord::Base
{
 #validation
belongs_to :creator ,:class_name=>'User'
belongs_to :assigned_to, :class_name=>'User' ,:foreign_key=>'assigned_to_id'
}

和用户模型

class User < ActiveRecord::Base
{
#any validation and other stuff
has_many :assets #did not specify either this association  is for creator , or   assigned_to  user.how can is specify that??
}

现在在资产展示视图中,我可以使用

获取创建者名称
@asset.creator.name

但无法分配名称

@asset.assigned_to.name =>(error is )undefined method `first_name' for nil:NilClas

和     @ asset.assigned_to_id.name =&gt;(错误)未定义方法`first_name'表示1:Fixnum

任何建议如何与同一模型进行双重关联

1 个答案:

答案 0 :(得分:1)

好的解决方案在我的最后评论中。 Multiple relation with same model

class Asset < ActiveRecord::Base

belongs_to :creator ,:class_name=>'User'
belongs_to :assigned_to, :class_name=>'User' 

end

user.rb

class User < ActiveRecord::Base

has_many :created_assets, :foreign_key => 'creator_id', :class_name => 'Asset'
has_many :assigned_assets , :foreign_key => 'assigned_to_id', :class_name => 'Asset'

end