3 가지 모델, 사용자, 게임 및 플레이어가 있습니다. 기본적으로 사용자와 게임 간에는 많은 관계가 있습니다. 플레이어는 조인 테이블과 같습니다. 단, 플레이어는 다른 정보를 가지므로 자체 모델이 있습니다.shoulda matchers는 유효 범위가 실패 할 때 validate_uniqueness_of를 실행해야합니다.
플레이어는 게임 ID와 사용자 ID의 독특한 콤보를 필요, 그래서 플레이어에서 말을하려고 : 내 사양에서 다음
validates_uniqueness_of :user_id, :scope => :game_id
와 나는 (했어야 매처 (matcher)를 사용하여) 말했다 :
it { should validate_uniqueness_of(:user_id).scoped_to(:game_id)}
belongs_to :game, :inverse_of => :players
belongs_to :user, :inverse_of => :players
아직 내가 액티브 :: statemen 받고 있어요 :
여기에 플레이어가 정의하는 관계입니다 해당 사양에 주석 오류가 발생했습니다.
ActiveRecord::StatementInvalid: Mysql2::Error: Column 'game_id' cannot be null: INSERT INTO `players` ETC...
어떤 문제가 있습니까?
감사합니다. 그곳에 벌레가 있다는 것을 몰랐습니다. – bdwain
업데이트 :이 문제는 v 2.7에서 수정 될 예정입니다. 참조 : https://github.com/thoughtbot/shoulda-matchers/commit/e3493811865a42b4bebcf0d3001333b9d4cb5208 –