我有一个多态关系如下:
class Profile
belongs_to :practice, polymorphic: :true
end
class ForeclosurePractice
has_one :profile, as: :practice
end
我想基于我拥有的概要文件构建一个练习对象,但不幸的是练习返回nil:
p = Profile.new
p.practice # => nil
如何从配置文件对象构建练习对象?
我有一个多态关系如下:
class Profile
belongs_to :practice, polymorphic: :true
end
class ForeclosurePractice
has_one :profile, as: :practice
end
我想基于我拥有的概要文件构建一个练习对象,但不幸的是练习返回nil:
p = Profile.new
p.practice # => nil
如何从配置文件对象构建练习对象?
3条答案
按热度按时间xkrw2x1b1#
p.build_practice
无法工作,因为build_other method is not generated for polymorphic associations。如果你想要一种动态创建示例的方法,例如基于表单中选择的类名,你可以尝试使用safe_constantize -简单的例子:
py49o6xq2#
基于Matt的答案,我将调整
build_practice
方法,如下所示:我遇到了一个问题,即更新多态
practice
会创建一个新对象(因为build_practice总是调用. new)。首先,我只使用了第二部分,并会想知道它会创建一个新的记录与每一个更新。
u5rb5r593#
您需要显式构建关联:
请参阅:http://apidock.com/rails/v4.0.2/ActiveRecord/Associations/ClassMethods/belongs_to