我在模型中有以下代码
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
答案 0 :(得分:3)
add_index
不是ActiveRecord::Base
的方法。这应放在数据库迁移中。
您可以将该语句添加到rails中的迁移中,它应该添加您要查找的唯一性。
另一种方法是使用validates_uniqueness_of
验证。
我相信这样的事情应该有效validates_uniqueness_of :ip, :scope => [:mode]
但请注意,由于未在数据库级别完成,因此不保证100%是唯一的。我建议仍然添加迁移中的索引,并使用它更新数据库以及唯一性验证。