2014-10-02 41 views
3

我有一個多態的關係如下:軌從多態建立關聯belongs_to的對象

class Profile 
    belongs_to :practice, polymorphic: :true 
end 

class ForeclosurePractice 
    has_one :profile, as: :practice 
end 

我想根據我的個人資料建立一個實踐的對象,但不幸的是實踐返回nil:

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

如何從Profile對象構建練習對象?

回答

0

你需要明確建立關聯關係:

p = Profile.new 
p.build_practice 

參見:http://apidock.com/rails/v4.0.2/ActiveRecord/Associations/ClassMethods/belongs_to

+0

是否有任何缺點這樣做在諸如'<%= f.simple_fields_for:practice,@ p.practice ||之類的觀點中@ p.build_practice do | builder | %>「,因爲它完成了同樣的事情(看起來)。 – kobaltz 2014-10-02 21:12:07

+0

在視圖中構建任何東西通常不是最好的主意。如果你能避免它,你應該避免它。 – katafrakt 2014-10-02 21:42:37

+0

這不幸的是不工作:profile.respond_to? :build_practice#=> false。 build_不存在的原因是因爲這是一個多態關係。因此,我的問題 – Donato 2014-10-02 21:45:49