2011-10-11 4 views
0

я следующие ассоциации создалиРельсы жадная загрузка и условия

class bookinghdr 
    belongs_to :agent 
end 

class bookingitem 
    belongs_to :bookinghdr, :include => agent 
end 

Так что я ожидал, чтобы быть в состоянии сделать следующее:

named_scope :prepay, :include=>["bookinghdr"], :conditions => ["bookinghdr.agent.agenttype = 'PP'"] 

и в моем контроллере сделать:

b = Bookingitem.prepay 

Но это дает мне ActiveRecord :: StatementInvalid: Mysql :: Ошибка: Неизвестный столбец 'bookinghdr.agent.agenttyp е»

Однако если я не включать пункт условия, то я получаю, на котором записи я могу сделать:

b = Bookingitem.prepay 
b[0].bookinghdr.agent.agenttype 

без ошибок!

Я не хочу получать все записи, а затем перебирать их, чтобы найти те, у агента которых есть флаг PP @. Я надеялся, что AR сделает это для меня.

У кого-нибудь есть идеи о том, как этого достичь?

ответ

1

Ваш вопрос показывает, что вы еще не полностью поняли, как работают ассоциации и названные области. Поскольку я не могу сказать по вашему вопросу, какие части не ясны, я предлагаю вам ознакомиться с руководством по основам ассоциации по адресу http://guides.rubyonrails.org/v2.3.11/association_basics.html. Это должно привести вас к скорости относительно концепций, которые вы хотите реализовать. После того, как вы прочтете руководство, все должно иметь смысл.

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