将内容插入HABTM表时的验证

时间:2012-05-23 11:05:21

标签: ruby-on-rails has-and-belongs-to-many

我已经使用连接表(hosts)设置了我的第一个HABTM表(ownershosts_owners)。我的测试似乎工作正常,网页也是如此。

所以,我的下一个问题是如何插入新数据及其各自的关系(即,连接表信息)。由于我预计会有两种主要方式来插入新数据:

  1. 以编程方式,从其他来源检索内容并将其保存到表格中
  2. 手动,用户将使用网页添加新条目。
  3. 那么,对于上述每一项,还有什么是“轨道”方式确保每次添加主机时至少还有一个所有者? (反之亦然。)我发现的所有书籍和文章似乎都停留在创建表格和模型的位置。

1 个答案:

答案 0 :(得分:0)

使用validation callback。它类似于数据库触发器,但属于您的rails模型。

例如。 (不确定这是否有效,必须尝试):

class Host < ActiveRecord::Base
  validates :has_at_least_one_owner?

  def has_at_least_one_owner?
    owners.any?
  end
end 

PS:也许您可以使用validates_presence_of,但不知道它是否适用于HABTM