RoR:我如何确保只为我的对象分配一个对象?

时间:2008-11-19 06:56:44

标签: ruby-on-rails ruby

在我的Ruby on Rails应用程序中,我有一个User表和一个Foo表。我还有一个User_Foo表来存储交叉引用数据。

我已将所有内容连接起来以便我的观点按照我的意愿工作,但是,现在我需要确保同一个Foo不会多次分配给我的用户。

最好的方法是什么?

我假设我可以在我的模型中使用validates_uniqueness_of,但这不是特定于单个用户的。我是否需要在更新时执行此操作?我希望有一个内置的“Ruby Way”来做这件事。

1 个答案:

答案 0 :(得分:7)

validates_uniqueness_of涵盖它,你只需要添加一个额外的选项来获得你想要的行为。

假设您有一个UserFoo模型来存储交叉引用关系(并且没有模型化)。以下验证不允许重复的foo-user链接。

class UserFoo < ActiveRecord::Base
  belongs_to :user
  belongs_to :foo
  validates_uniqueness_of :foo_id, :scope => :user_id