ruby-on-rails - Rails 模型和独特的组合

标签 ruby-on-rails model

我有一个 Rails 应用程序,它有一个名为 friendrequests 的表。它看起来像这样:

user1_id:integer user2_id:integer hasaccepted:boolean

我正在创建一个添加 friend 的选项,但好友请求只能发送一次。所以你不能在数据库的数据中有这样的东西:

user1_id | user2_id | hasaccepted
       1 |        2 |       false
       1 |        2 |       false

user1_id | user2_id | hasaccepted
       1 |        2 |       false
       2 |        1 |       false

user1_id/user2_id 组合必须是唯一的,而不是列本身,所以这是可能的:

user1_id | user2_id | hasaccepted
       1 |        2 |       false
       1 |        3 |       false

是否可以在模型中定义它?我该怎么做?

最佳答案

对于第一种情况,在您的 FriendRequest 模型中,使用 validates_uniqueness_of(:user1_id, :scope => :user2_id)。您可能还需要反过来。对于第二种情况,我将覆盖 FriendRequest 中的 #validate 并在那里进行检查(有关该方法应如何执行的详细信息,请参阅 API docs)。

关于ruby-on-rails - Rails 模型和独特的组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2291240/

相关文章:

ruby-on-rails - SImplecov - Grape API 的测试覆盖率不正确

ruby-on-rails - 在 Rails 中,你可以设置 flash[ :error] when calling link_to?

ruby-on-rails - 如何在嵌套属性中使用条件验证 validate_presence_of ?

php - 在 Zend Framework 中为具有多个表关系的对象建模

java - 如何在Gurobi中编写以下目标函数?

php - Zend Framework ORM 风格的表数据网关与扩展 Zend_Db_Table_Abstract

ruby-on-rails - Rails 测试数据库中的默认值失败

ruby-on-rails - 在 Windows 上部署的 JRuby 有任何后台进程 gem 吗?

javascript - 如何在 Node 书架模型中定义列名称?

ruby-on-rails - Rails : rendering the js. erb 模板使用 Controller