过滤“包含” - Rails 3

时间:2011-03-23 00:22:59

标签: ruby-on-rails

这些是我的协会:

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

问题是我从所有语言中获得了信息。

是否可以使用过滤器(如“where info.language.id == 1”),以便每个事件只在XML中显示language1信息?

由于

更新:

嗨,迈克,谢谢你的回答。

不幸的是我收到了这个错误:

  

nil的未定义方法`eq':NilClass   Rails.root:/ Users / abramo / village

     

应用程序跟踪|框架跟踪|   完整追踪   应用程序/控制器/ 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

我真的不明白...... Nil是什么对象?

1 个答案:

答案 0 :(得分:1)

Event.joins(:infos => :language).where("languages.id = 1")