在我的Ruby on Rails应用程序中,我有一个User表和一个Foo表。我还有一个User_Foo表来存储交叉引用数据。
我已将所有内容连接起来以便我的观点按照我的意愿工作,但是,现在我需要确保同一个Foo不会多次分配给我的用户。
最好的方法是什么?
我假设我可以在我的模型中使用validates_uniqueness_of,但这不是特定于单个用户的。我是否需要在更新时执行此操作?我希望有一个内置的“Ruby Way”来做这件事。
答案 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