Rails中的NoMethodError未定义方法`add_index'

时间:2014-01-11 16:44:00

标签: ruby-on-rails

我在模型中有以下代码

class Thorserver < ActiveRecord::Base
  add_index :Thorserver, [:ip, :mode], :unique => true
end

我看到这个错误试图通过视图

插入到表中
NoMethodError (undefined method `add_index' for #<Class:0x9a680494>):
app/models/thorserver.rb:2
app/controllers/testbeds_controller.rb:147:in `addresource'

ruby​​版本是ruby 1.8.6,rails版本是Rails 2.3.8

1 个答案:

答案 0 :(得分:3)

add_index不是ActiveRecord::Base的方法。这应放在数据库迁移中。

您可以将该语句添加到rails中的迁移中,它应该添加您要查找的唯一性。

另一种方法是使用validates_uniqueness_of验证。

我相信这样的事情应该有效validates_uniqueness_of :ip, :scope => [:mode]

但请注意,由于未在数据库级别完成,因此不保证100%是唯一的。我建议仍然添加迁移中的索引,并使用它更新数据库以及唯一性验证。