2015-01-02 5 views
1

Я попытался установить массив с идентификаторами в атрибуте модели, как описано в https://github.com/soveran/ohm#models, но я получаю исключение. Что не так в моем коде?Ruby Ohm, неопределенное исключение метода при попытке создать модель, задающую массив с идентификаторами

Модель

class Event < Ohm::Model 

attribute :title 
set :attendees, :User 

end 

Тест

@fran = User.create(name: "Fran", email: '[email protected]') 
@jose = User.create(name: "Jose", email: '[email protected]') 

event = Event.create(title: 'Party in Las Vegas', attendees: [@fran.id,@jose.id]) 

NoMethodError: undefined method `attendees=' for #<Event:0x000000020fb430> 
    /home/ciro/.rvm/gems/ruby-2.1.3/gems/ohm-2.0.1/lib/ohm.rb:1470:in `block in update_attributes' 
    /home/ciro/.rvm/gems/ruby-2.1.3/gems/ohm-2.0.1/lib/ohm.rb:1470:in `each' 
    /home/ciro/.rvm/gems/ruby-2.1.3/gems/ohm-2.0.1/lib/ohm.rb:1470:in `update_attributes' 
+0

У вас есть опечатка - после того, как вы написали 'attendes' и once' attendees' –

+0

Извините, что это ошибка в "copy-paste". Теперь фиксируется в сообщении. В модели у меня есть «участники» и в тесте тоже. Я проверил это. Есть идеи? –

ответ

1

Вы должны использовать метод Set#add для этой работы, и этот метод принимает только 1 аргумент:

@fran = User.create(name: "Fran", email: '[email protected]') 
@jose = User.create(name: "Jose", email: '[email protected]') 

event = Event.create(title: 'Party in Las Vegas') 
event.attendees.add(@fran) 
event.attendees.add(@jose) 

Если они предназначены чтобы быть ассоциациями, тогда я бы посмотрел collections