[英]Correct ROR model callback for creation associated
我在Rails 3應用中關聯了模型User
和Channel
。 Channel
是在創建User
創建的
class User < ActiveRecord::Base
before_create do
self.channels.build
end
has_many :channels
end
class Channel < ActiveRecord::Base
belongs_to :user
validations block
...
end
問題是,如果無法通過Channel的驗證,則會在DB中創建User
,但不會創建Channel
。 在什么地方回調Channel
創建創建User
和Channel
在一個“交易”? 或者,也許還有另一種正確的方法?
提前致謝。
UPD1:在User
創建時Channel
創建放置在模型中,因為在某些情況下,創建的對象不調用控制器。
您可以使用“ accepts_nested_attributes_for”
類User <ActiveRecord :: Base
has_many:頻道
accepts_nested_attributes_for:頻道
結束
Channel <ActiveRecord :: Base類
當屬:用戶
驗證塊
結束
使用validates :channels, associated: true
。
您可能應該檢查自己的頻道驗證,因為如果不保存驗證,就意味着您正在做您的應用程序無法預期的事情。
你想太多了。 這是非常常見的情況,並且有約定。
首先,Pedro說,您需要驗證Channel模型中的關聯。 這將防止沒有user_id的頻道的保存。
然后,在控制器的create
動作中,只需確保將包括用戶對象在內的所有參數都發送到此處進行創建。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.