I have tried to set an array with ids in a model attribute like is explained within https://github.com/soveran/ohm#models but I get an exception. What is wrong in my code?
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'
You need to use the Set#add
method for this to work and that method only takes 1 argument:
@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)
If these are meant to be associations then I'd look at collections