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

Don*_*ato 4 ruby-on-rails

我有一个多态关系如下:

class Profile
  belongs_to :practice, polymorphic: :true
end

class ForeclosurePractice
  has_one :profile, as: :practice
end  
Run Code Online (Sandbox Code Playgroud)

我想根据我拥有的配置文件构建一个练习对象,但不幸的是实践返回零:

p = Profile.new
p.practice # => nil
Run Code Online (Sandbox Code Playgroud)

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

Mat*_*att 5

p.build_practice不起作用,因为build_other 方法不是为多态关联生成的

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

p.practice = params[:practice_type].safe_constantize.new
Run Code Online (Sandbox Code Playgroud)