2014-01-11 5 views
0

Я следующий код в моделиNoMethodError неопределенный метод `add_index» в 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' 

версия рубин рубин 1.8.6, рельсы версия Rails 2.3.8

+0

Прочтите это руководство: http://guides.rubyonrails.org/migrations.html – taro

ответ

3

add_index не метод ActiveRecord::Base. Это должно быть помещено в вашу миграцию базы данных.

Вы можете добавить это заявление к миграции в рельсах, и он должен добавить уникальность, которую вы ищете.

Другой способ сделать это - использовать проверку validates_uniqueness_of.

Я считаю, что-то, как это должно работать validates_uniqueness_of :ip, :scope => [:mode]

Однако, обратите внимание, что, поскольку это не сделано на уровне базы данных не гарантируется быть уникальным 100%. Я бы предложил еще добавить индекс, который у вас есть в миграции, и обновить его с ним, а также проверку уникальности.

+0

Есть ли способ обеспечить уникальность сочетания столбцов в ActiveRecord :: Base. – Bindu

Смежные вопросы