Ich habe 3 Modelle, Benutzer, Spiel und Player. Es gibt im Grunde eine Viele-zu-Viele-Beziehung zwischen Benutzern und Spielen, mit Spielern als Join-Tabelle, außer dass die Spieler andere Informationen haben, also hat sie ein eigenes Modell.sotaa matchers sollte validate_uniqueness_of mit dem Bereich
Ein Spieler eine einzigartige Kombination aus Spiel und Benutzer-ID benötigt, so habe ich versucht, in Spieler zu sagen:
validates_uniqueness_of :user_id, :scope => :game_id
und dann in meinem spec, sagte ich (shoulda Matcher verwenden):
it { should validate_uniqueness_of(:user_id).scoped_to(:game_id)}
hier sind die Beziehungen der Spieler definiert:
belongs_to :game, :inverse_of => :players
belongs_to :user, :inverse_of => :players
noch Positionspapier ich erhalte eine Activerecord :: tinvalid Fehler auf der Spezifikation
ActiveRecord::StatementInvalid: Mysql2::Error: Column 'game_id' cannot be null: INSERT INTO `players` ETC...
Irgendeine Idee, was schief läuft?
Dank. wusste nicht, dass der Bug da war. – bdwain
Update: Dies wird in v 2.7 behoben werden. Siehe: https://github.com/thoughtbot/shoulda-matchers/commit/e3493811865a42b4bebcf0d3001333b9d4cb5208 –