を動作しません、私は3つのモデルがあります。私は、ユーザーが彼らが話すことができた言語(複数可)を選択を助けるためにnested_form gemを使用していRailsのネストされた属性:validates_uniqueness_ofは
class UserLanguage < ActiveRecord::Base
belongs_to :user
belongs_to :language
end
class Language < ActiveRecord::Base
has_many :user_languages
has_many :users, :through => :user_languages
end
class User < ActiveRecord::Base
has_many :user_languages, :dependent => :destroy
has_many :languages, :through => :user_languages
accepts_nested_attributes_for :user_languages, :allow_destroy => true
end
をそのためのCRUDが正常に動作しています。
しかし、私はUserLanguageの一意性を検証できません。私はこの2構文を試みるが、彼らは私のために動作しませんでした:
validates_uniqueness_of :language_id, scope: :user_id
validates :language_id, :uniqueness => {:scope => user_id}
user_languagesテーブルのための私のスキーマ:
create_table "user_languages", force: :cascade do |t|
t.integer "user_id"
t.integer "language_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
add_index "user_languages", ["language_id"], name: "index_user_languages_on_language_id", using: :btree
add_index "user_languages", ["user_id"], name: "index_user_languages_on_user_id", using: :btree
は、私は一人のユーザが一度のみの言語を選択することができますを確認するために何をすべきか?私がドロップダウン内で英語を選択すると、2番目の英語は保存されず(重複して)拒否されます。
がclass Language < ActiveRecord::Base
has_many :users
end
class User < ActiveRecord::Base
has_one :language
end
そして、定義により、ユーザーは一度に一つの言語を持つことになりますし、あなたの全体的なモデルは次のようになります。ユーザーが持っている、唯一の言語を持っている必要があり
ありがとうございます。心から感謝する。 –