【问题标题】:RoR: How do I ensure only one object is assigned to my object?RoR:如何确保只有一个对象分配给我的对象?
【发布时间】:2008-11-19 06:56:44
【问题描述】:

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

我已经为我的视图按我想要的方式连接了所有东西,但是,现在我需要确保同一个 Foo 不会多次分配给我的用户。

最好的方法是什么?

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

【问题讨论】:

    标签: ruby-on-rails ruby


    【解决方案1】:

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

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

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

    【讨论】:

    • 太棒了。这正是我想要的。
    猜你喜欢
    • 1970-01-01
    • 2012-05-06
    • 1970-01-01
    • 2019-12-27
    • 1970-01-01
    • 2012-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多