Две ассоциации has_may с той же моделью Rail 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'
}

и модель пользователя

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 show я могу получить имя создателя с помощью

@asset.creator.name

но не могу присвоить_имя

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

и @asset.assigned_to_id.name=>(ошибка) неопределенный метод `first_name' для 1:Fixnum

любое предложение, как я могу сделать двойную ассоциацию с одной и той же моделью


person Naveed    schedule 24.03.2011    source источник
comment
после прочтения ссылки я изменил свой класс модели пользователя 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' } и модель ассета не изменилась, теперь она работает ну, в консоли вывод консоли: u=User.new :first_name=›'foo' u.id=12 u.inspect=›#‹Идентификатор пользователя: 34,first_name:foo› также u2.inspect=›#‹Идентификатор пользователя : 45,first_name:bar› ...подробнее в следующем комментарии   -  person Naveed    schedule 24.03.2011
comment
теперь давайте создадим актив irb(main):032:0› assets=Asset.new :assigned_to_id=›u,:creator_id=›u2,:name=›'Android' =› #‹Asset id: nil, name: Android, assigned_to_id: 1, Creator_id: 1›теперь assets.assigned_to.name=›(ошибка) неопределенное имя метода для nil:NilClass и та же ошибка для assets.creator.first_name, но если я назначу после объявления актива как a.assigned_to=u ,a.creator=u2 теперь a.assigned_to.first_name=›'bar' и a.creator.first_name=›'foo' {интересно}, но все это для представлений console.in работает только assets.creator.first_name, пожалуйста, любое предложение я застрял здесь   -  person Naveed    schedule 24.03.2011


Ответы (1)


нормальное решение было в моем последнем комментарии. Несколько отношений с одной и той же моделью

class Asset < ActiveRecord::Base

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

end

пользователь.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
person Naveed    schedule 07.04.2011