ArgumentError: Unknown key: :uniqueness. Valid keys are: :class_name, :anonymous_class, :foreign_key, :validate, :autosave, :table_name, :before_add, :after_add, :before_remove, :after_remove, :extend, :primary_key, :dependent, :as, :through, :source, :source_type, :inverse_of, :counter_cache, :join_table, :foreign_type, :index_errorsRails的5:引发ArgumentError:未知键:唯一
class League < ActiveRecord::Base
validates :user_id, presence: true
has_one :user
has_many :teams, uniqueness: {
scope: [:user_id],
message: 'You can only create one team per league'
}
end
有在中甲联赛多支球队,但球队必须有一个独特的USER_ID。
create_table "leagues", force: :cascade do |t|
t.integer "user_id"
t.string "name"
t.string "key"
t.index ["user_id"], name: "index_leagues_on_user_id"
end
create_table "teams", force: :cascade do |t|
t.integer "user_id"
t.string "name"
t.string "players"
t.integer "league_id"
t.index ["league_id"], name: "index_teams_on_league_id"
t.index ["user_id"], name: "index_teams_on_user_id"
end
validates :user_id, presence: true
和has_one :user
是关于谁创造了联盟的用户。
只是一个说明,只有轨唯一性验证并不总是足够的。它让您打开竞争条件,其中2个近乎同步的请求创建相同的数据(最终用户点击提交2次)都被添加。标准做法是对唯一性进行轨道验证和数据库验证。 [此链接](https://rietta.com/blog/2015/05/04/validates-uniqueness-race-condition-in-ruby-on-rails/)更详细地解释了这是怎么发生的以及如何设置它up –
@MichaelGorman是的!我知道这一点。当OP找出他做错了什么的时候,这将会晚些时候!我的回答说错了什么。而已 :) – Pavan