Rails 3 validates_uniqueness_of with:scope生成无效的SQL?

时间:2011-01-26 18:46:42

标签: ruby-on-rails-3 activerecord sqlite validates-uniqueness-of

有两个记录一些月度统计数据的模型,我正在尝试使用以下方法在模型中强制执行复合键约束:

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正确地抛出错误。

如果我在这里做错了什么想法?

1 个答案:

答案 0 :(得分:2)

试试这个

validates :entity_id, :uniqueness => {:scope => [:year, :month]}
你可能想要

:presence => true