Mám polymorfný vzťah nasledovne:
class Profile
belongs_to :practice, polymorphic: :true
end
class ForeclosurePractice
has_one :profile, as: :practice
end
Chcem postaviť cvičný objekt na základe profilu, ktorý mám, ale nanešťastie sa cvičenie vráti nula:
p = Profile.new
p.practice # => nil
Ako môžem zostaviť cvičný objekt z objektu Profile?
odpovede:
2 pre odpoveď č. 1p.build_practice
nevyhrá prácu, pretože build_other metóda nie je generovaná pre polymorfné asociácie.
Ak chcete spôsob, ako dynamicky vytvoriť inštanciu, napríklad na základe názvu triedy vybraného vo formulári, môžete skúsiť použiť save_constantize - jednoduchý príklad:
p.practice = params[:practice_type].safe_constantize.new
0 pre odpoveď č. 2
Musíte explicitne vybudovať združenie:
p = Profile.new
p.build_practice
pozri: http://apidock.com/rails/v4.0.2/ActiveRecord/Associations/ClassMethods/belongs_to