Ich habe 3 Modelle:.Rails Attribute verschachtelt: validates_uniqueness_of nicht
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
ich nested_form gem bin mit Benutzer zu helfen, wählen Sie die Sprache (n) sie können in sprechen Die CRUD dafür ist adaequat .
Aber ich kann die Eindeutigkeit der UserLanguage nicht validieren. Ich versuche, diese 2-Syntax, aber sie haben für mich nicht:
validates_uniqueness_of :language_id, scope: :user_id
validates :language_id, :uniqueness => {:scope => user_id}
Mein Schema für user_languages Tabelle:
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
Was soll ich tun, dass ein Benutzer machen kann, wenn nur eine Sprache wählen? Angenommen, ich wähle Englisch in der Dropdown-Liste, wird mein zweites Englisch nicht gespeichert (dupliziert) und abgelehnt.
Vielen Dank für Ihre Hilfe. Schätze es wirklich. –