我有一个Release个模型,有medium列和country列(等等).不应该有releases个共享相同的medium/country组合.

作为rails验证,我该如何编写这篇文章?

推荐答案

您可以将uniqueness验证与scope选项一起使用.

此外,还应向数据库中添加一个唯一索引,以防止新记录在写入之前同时判断时通过验证:

class AddUniqueIndexToReleases < ActiveRecord::Migration
  def change
    add_index :releases, [:country, :medium], unique: true
  end
end



class Release < ActiveRecord::Base
  validates :country, uniqueness: { scope: :medium }
end

Ruby-on-rails相关问答推荐

如何在 Arel 中“重用”单个绑定变量?

正确更新其他列的更新列

Dotenv 多行变量

如何从设计中删除/禁用注册

rails db:migrate vs rake db:migrate

Rails: Sprockets::Rails::Helper::AssetNotPrecompiled 在开发中

来自控制台的 ActionCable.server.broadcast

在 El Capitan 上安装 Nokogiri (1.6.7) 时出错

rails 控制台无法启动

ActiveRecord::StatementInvalid: PG InFailedSqlTransaction

Rails 4 Form: has_many through: checkboxes

来自 nginx / 乘客的“从应用程序收到的不完整响应”

Rails 自动加载完全大写的名称,如 API

Pages#home 中的 Rails ExecJS::ProgramError?

如何使用 rspec 测试 ActionMailer Deliver_later

jbuilder vs rails-api/active_model_serializers 用于 Rails 4 中的 JSON 处理

为什么 respond_with 被从 rails 4.2 移除到它自己的 gem 中?

不规则的 bootstrap 列包装

我如何找出为什么我不能#destroy() 记录?

带有自定义列名的 Rails belongs_to