1

いくつかの月次統計を記録する 2 つのモデルがあり、次を使用してモデル内で複合キー制約を適用しようとしています。

validates_uniqueness_of :entity_id, :scope => [:year, :month]

レコードに対してメソッドを実行しようとすると、.valid?ActiveRecord が不適切な SQL を生成しているように見えるため、継続的にエラーが発生します。

SQLite3::SQLException: near "FROM": syntax error: SELECT      FROM       "table"  WHERE     ("table"."entity_id" = 1) AND ("table"."year" = 2007) AND ("table"."month" = 6) LIMIT 1

上記の Rails は select ステートメントに * を追加していないため、SQLite は正しくエラーをスローすることに注意してください。

ここで何か間違ったことをした場合のアイデアはありますか?

4

1 に答える 1

2

これを試して

validates :entity_id, :uniqueness => {:scope => [:year, :month]}

あなたはおそらく欲しい

:presence => true 
于 2011-08-12T23:58:54.837 に答える