Не могу использовать ассоциации ActiveRecord Rails 3 в IRB - PullRequest
0 голосов
/ 18 октября 2010

У меня есть три класса со следующими ассоциациями:

class Technician < ActiveRecord::Base  
  has_many :tickets
  has_many :services, :through => :tickets  
end

class Ticket < ActiveRecord::Base
  belongs_to :technician
  has_many :services
end

class Service < ActiveRecord::Base
  belongs_to :ticket
  belongs_to :technicians
end

Когда я пытаюсь использовать ассоциации в IRB, я получаю сообщения об ошибках ниже:

tech = Technician.first
ticket1 = Ticket.new
tech.ticket1

NoMethodError: undefined method `t1' for #<Technician:0xa0d6d6c>
from /usr/local/ruby/lib/ruby/gems/1.9.1/gems/activemodel-3.0.0/lib/active_model/attribute_methods.rb:364:in `method_missing'
from /usr/local/ruby/lib/ruby/gems/1.9.1/gems/activerecord-3.0.0/lib/active_record/attribute_methods.rb:46:in `method_missing'
from (irb):7
from /usr/local/ruby/lib/ruby/gems/1.9.1/gems/railties-3.0.0/lib/rails/commands/console.rb:44:in `start'
from /usr/local/ruby/lib/ruby/gems/1.9.1/gems/railties-3.0.0/lib/rails/commands/console.rb:8:in `start'
from /usr/local/ruby/lib/ruby/gems/1.9.1/gems/railties-3.0.0/lib/rails/commands.rb:23:in `<top (required)>'
from script/rails:6:in `require'
from script/rails:6:in `<main>'

Являюсь ли я миссиячто-то не так делаешь?

Ответы [ 2 ]

2 голосов
/ 18 октября 2010

Да, вы делаете что-то не так.Сначала вы должны прочитать это: http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html

В данном конкретном случае вы, вероятно, хотели сделать что-то вроде этого:

tech = Technician.first
tech.tickets << Ticket.new
tech.tickets.last
....
0 голосов
/ 18 октября 2010

Я думаю, что моделирование отношений может быть отключено. Вот как я их смоделирую:

class Technician < ActiveRecord::Base  
  has_many :tickets
  has_many :services, :through => :tickets  
end

class Ticket < ActiveRecord::Base
  belongs_to :technician
  belongs_to :service
end

class Service < ActiveRecord::Base
  has_many :tickets
  has_many :technicians, :through => :tickets
end

Конечно, я не знаю деталей вашей реализации, так что в лучшем случае это предположение.

Синтаксис Buru для использования ассоциаций правильный.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...