我有两个模型Link
和Feed
有许多关系(有很多:通过LinkFeed
联接模型)。
每个链接应属于一个或多个Feed。所以我想允许创建链接(因为有相应的Feed记录):
@feed = Feed.create(name: "Test Feed")
@feed.links.create!(url: "http://google.com")
无法使用简单Link.create!(url: "http://google.com")
创建链接,因为它没有相应的Feed记录。我怎么能这样做?
编辑: 我添加了这个验证:
validate do
errors.add(:base, "Must have at least one feed") unless feeds.size > 0
end
但是现在这两个例子都失败了这个错误:/
答案 0 :(得分:0)
尝试在外键must not be null
中添加feed_id
条件。
class Link
validates :feed_id, :presence => true
...
end
这样可以保持在没有与Feed关联的情况下创建的记录失败。
编辑:
这里有两个关于多对多关系验证的答案
Validate uniqueness of many to many association in Rails
Correct implementation of many-to-many in Ruby on Rails?
答案 1 :(得分:0)
您的Link类需要validates_presence_of:feed_id和validates_associated的组合。 validates_associated
确保Feed也是有效对象。