簡體   English   中英

正確的ROR模型回調與創建相關聯

[英]Correct ROR model callback for creation associated

我在Rails 3應用中關聯了模型UserChannel 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創建創建UserChannel在一個“交易”? 或者,也許還有另一種正確的方法?

提前致謝。

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM