rails从多态的belongs_to对象构建关联

时间:2014-10-02 20:48:35

标签: ruby-on-rails

我有如下多态关系:

class Profile
  belongs_to :practice, polymorphic: :true
end

class ForeclosurePractice
  has_one :profile, as: :practice
end  

我想根据我的个人资料构建一个练习对象,但遗憾的是练习返回nil:

p = Profile.new
p.practice # => nil

如何从Profile对象构建练习对象?

2 个答案:

答案 0 :(得分:2)

p.build_practice无法工作,因为build_other method is not generated for polymorphic associations

如果您想要一种动态创建实例的方法,例如根据表单中选择的类名,您可以尝试使用save_constantize - 简单示例:

p.practice = params[:practice_type].safe_constantize.new

答案 1 :(得分:0)

您需要明确构建关联:

p = Profile.new
p.build_practice

请参阅:http://apidock.com/rails/v4.0.2/ActiveRecord/Associations/ClassMethods/belongs_to