Фильтр на «включить» - Rails 3 - PullRequest
0 голосов
/ 23 марта 2011

это мои ассоциации:

class Activity < ActiveRecord::Base

  has_many :infos, :dependent => :destroy
  has_many :events, :dependent => :destroy
  accepts_nested_attributes_for :infos

end

class Event < ActiveRecord::Base

  belongs_to :activity
  has_many :infos, :through => :activity

end

class Info < ActiveRecord::Base

  has_one :language
  belongs_to :activity

end

Теперь я могу получить XML со всеми событиями и их информацией, используя:

@ events = Event.all

respond_to do |format|
  format.xml  { render :xml => @events.to_xml(:include => [:infos ]) }
end

Проблема в том, что я получаю информацию со всех языков.

Можно ли использовать фильтр (например, "где info.language.id == 1"), чтобы в XML отображалось только информация language1 для каждого события?

Спасибо

ОБНОВЛЕНИЕ:

Привет, Майк, спасибо за твой ответ.

К сожалению, я получаю эту ошибку:

неопределенный метод `eq 'для nil: NilClass Rails.root: / Пользователи / abramo / village

Трассировка приложения | Framework Trace | Полная трассировка приложение / контроллеры / events_controller.rb: 29: в block (2 levels) in locale' app/controllers/events_controller.rb:28:in локали

и строки 28,29 - последняя строка моего метода локали:

  def locale
    @events = Event.joins(:infos => :language).where("languages.id = 2")

    respond_to do |format|
      format.xml  { render :xml => @events.to_xml(:include => [:infos ]) }
    end
  end

Я действительно не понимаю ... какой объект Нил?

1 Ответ

1 голос
/ 23 марта 2011
Event.joins(:infos => :language).where("languages.id = 1")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...