2017-08-11 121 views
0

我有一個聊天消息模型和一個聊天消息附件模型。當用戶使用附件請求聊天消息時:首先創建聊天消息本身,然後創建附件,然後創建兩者之間的關聯。Rails模型:消息和依賴依賴

問題是我希望聊天消息需要身體,但前提是沒有附件。如果有附件,我希望消息不要求身體。

在創建消息時,如何知道附件將不會在手前創建,我該如何搶先設置(或不設置)此需求?

+1

爲什麼不在同一時間創建記錄?請顯示您當前的代碼(表單視圖,控制器方法,模型)。 – spickermann

回答

0

我不知道你的控制器是怎麼樣的,但是如果這是在一個請求中完成的(通常是這樣),你可以簡單地添加一個自定義的驗證器。例如:

class Message < ActiveRecord::Base 
    has_one :attachment 

    validate do 
    if attachment.nil? 
     errors.add(:body, 'must be present') if body.blank? 
    end 
    end 
end 

class Attachment < ActiveRecord::Base 
    belongs_to :message 
end 

如果您對Attachment模型驗證,可以先通過attachment.valid?檢查。