2014-01-11 119 views
0

我在模型下面的代碼NoMethodError未定義的方法`add_index」

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' 

紅寶石版本紅寶石1.8.6,Rails版本是Rails 2.3.8

+0

請閱讀本指南:http://guides.rubyonrails.org/migrations.html – taro

回答

3

add_index不是ActiveRecord::Base的方法。這應該放在你的數據庫遷移中。

您可以將該語句添加到rails中的遷移,它應該添加您正在尋找的唯一性。

這樣做的另一種方法是使用validates_uniqueness_of驗證。

我相信這樣的事情應該工作validates_uniqueness_of :ip, :scope => [:mode]

但是請注意,因爲這不是在數據庫級別做它不能保證是唯一的100%。我建議仍然添加您在遷移中使用的索引,並更新您的數據庫以及唯一性驗證。

+0

有什麼辦法強制ActiveRecord :: Base中的列的組合的唯一性。 – Bindu

相關問題