有3种型号:Talk
,Topic
和Conference
。
每个都有标题和描述。
Conference
有很多Topics
,而Topic
有很多会谈。
class Conference < ApplicationRecord
has_many :topics
has_many :talks, through: topics
end
class Topic < ApplicationRecord
belongs_to :conference
has_many :talks
end
class Talk < ApplicationRecord
belongs_to :topic
belongs_to :conference, through: :topic
end
如何验证Talk
中的Conference
是否具有唯一标题?
我能想到的唯一解决方案是为Talk
- Topic
关联创建另一个表并在那里执行验证。但是这可以在不创建新表的情况下实现吗?
答案 0 :(得分:0)
试试这个
validate :unique_talk_in_conference
def unique_talk_in_conference
if self.conference.talks.collect(&:title).include?(self.title)
errors.add(:title, "Talks should be unique in a conference")
end
end
P.S:我没有测试它