2011-03-24 46 views
1

嗨即時通訊相當初學者在軌道。我有一個問題的建議將不勝感激。 我有兩個模型「用戶」和「資產」 「資產」由「用戶」創建和資產」可以被分配到‘用戶’模式是兩個has_may協會與相同模型鐵3

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' 
} 

和用戶模型是

​​

現在在資產放映視圖我可以

獲得創建者名稱
@asset.creator.name 

但不能assigned_to名稱

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

和 @ asset.assigned_to_id.name =>(錯誤)1未定義的方法`如first_name」:Fixnum對象

任何建議如何可以我使同一模型雙關聯

+0

讀取後[鏈接](http://stackoverflow.com/questions/5149128/rails-3-multiple-has-one-associations-seeding)我已更改我的用戶模型類User 'creator_id',:class_name =>'資產' has_many:assigned_assets,:foreign_key =>'assigned_to_id',:class_name => 'Asset' }並且資產模型現在沒有改變,它在控制檯的控制檯輸出中運行良好u = User.new:first_name =>'foo'u.id = 12 u .inspect =>「#也是u2.inspect =>」#<用戶id:45,first_name:bar> ...更多關於下一條評論 – Naveed 2011-03-24 12:47:58

+0

現在讓我們創建Asset irb(main) :032:0> asset = Asset.new:assigned_to_id => u,:creator_id => u2,:name =>'Android' =>#現在 asset.assigned_to.name =>(錯誤)未定義的方法名稱爲nil:NilClass和asset.creator.first_name相同的錯誤,但是如果我在聲明資產之後分配如a.assigned_to = u,a.creator = u2 now a.assigned_to.first_name =>'bar'和a.creator.first_name =>'foo'{有趣}但這些全部僅適用於console.in視圖asset.creator.first_name works plz任何建議 – Naveed 2011-03-24 13:00:25

回答

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