我在验证一个具有has_many through关联的模型时遇到了困难。以下是相关模型:
Broadcast模型
class Broadcast < ActiveRecord::Base
attr_accessible :content,
:expires,
:user_ids,
:user_id
has_many :users, through: :broadcast_receipts
has_many :broadcast_receipts, dependent: :destroy
validates :user_id, presence: true
validates :content, presence: true
end
广播收据模型
class BroadcastReceipt < ActiveRecord::Base
belongs_to :broadcast
belongs_to :user
attr_accessible :user_id, :cleared, :broadcast_id
validates :user_id , presence: true
validates :broadcast_id , presence: true
end
还有一个与用户相关的关联,这些用户通过广播接收到许多广播收据。
问题似乎出现在以下代码行中:
validates :broadcast_id , presence: true
每当我尝试创建广播时,都没有错误消息就回滚了。但是,如果删除上述行,则一切正常。
这看起来像是在创建广播收据之前未保存广播的问题。
有没有办法验证收据模型上是否设置了广播ID?
validate :broadcast_id_exists
,并在你的验证中检查广播是否存在于数据库中。 - Kaeros