2013-04-22 32 views
0

我有两个模型LinkFeed与许多关系(有很多:通过LinkFeed连接模型)。 每个链接应该属于一个或多个Feed。所以,我想允许使用(因为有相应的进料记录)创建链接:如何验证时没有相应的记录(多对多关系)

@feed = Feed.create(name: "Test Feed") 
@feed.links.create!(url: "http://google.com") 

而且无法创建简单的Link.create!(url: "http://google.com")链接,因为它不具备相应的进料记录。我怎样才能做到这一点?

编辑: 我加入这个验证:

validate do 
    errors.add(:base, "Must have at least one feed") unless feeds.size > 0 
end 

但现在这两个例子中失败,此错误:/

回答

0

尝试添加must not be null条件的外键feed_id

class Link 

    validates :feed_id, :presence => true 
    ... 
end 

这样可以保持创建的记录与feed无关联而失败。

编辑:

在这里,有关验证两个答案在许多一对多relashionships。
Validate uniqueness of many to many association in Rails
Correct implementation of many-to-many in Ruby on Rails?

+0

那么我需要在Link模型中使用feed_id吗? – 2013-04-22 17:31:32

+0

那么,链接与饲料有关,对吧?所以我认为Link应该对Feed提供参考。 – MurifoX 2013-04-22 17:34:28

+0

是的,但它可能与1个或更多的饲料有关:/ – 2013-04-22 17:37:16

0

你需要validates_presence_of的组合:在您的Link类FEED_ID和validates_associatedvalidates_associated确保Feed也是一个有效的对象。

相关问题