【发布时间】:2013-02-07 09:59:11
【问题描述】:
我无法通过关联从 has_many 验证模型。以下是相关型号:
广播模型
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
通过广播收据与拥有_many广播收据的用户也有关联。
问题似乎与以下行有关:
validates :broadcast_id , presence: true
每当我尝试创建广播时,我都会得到回滚,但没有给出错误消息。但是,当删除上述行时,一切都按预期工作。
这似乎是在创建广播收据之前未保存广播的问题。
有什么方法可以验证在收据模型上设置了 broadcast_id 吗?
【问题讨论】:
-
您可以创建一个自定义验证器,例如:
validate :broadcast_id_exists并在 DB 中存在广播时检查您的验证。
标签: ruby-on-rails validation has-many-through