0

我有两个模型Link并且Feed有很多关系(有很多:通过LinkFeed加入模型)。每个链接应属于 1 个或多个 Fe​​ed。所以我想允许创建链接(因为有相应的Feed记录):

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

Link.create!(url: "http://google.com")并且由于没有对应的 Feed 记录而无法使用 simple 创建链接。我怎样才能做到这一点?

编辑:我添加了这个验证:

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

但是现在两个示例都因此错误而失败:/

4

2 回答 2

0

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

class Link

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

这将使创建的记录与提要没有关联而失败。

编辑:

在这里,关于多对多 relashionships 中的验证的两个答案。
验证 Rails 中多对多关联的唯一性
在 Ruby on Rails 中正确实现多对多?

于 2013-04-22T17:21:06.367 回答
0

您需要在 Link 类上组合 validates_presence_of :feed_id 和validates_associated 。validates_associated确保 Feed 也是有效的对象。

于 2013-04-22T17:22:50.153 回答