使用rails活动记录获取第二级模型

时间:2010-01-21 13:45:56

标签: ruby-on-rails ruby activerecord

我有一个关系,其中一个帖子属于一个城市,其属于一个状态:

class Post < ActiveRecord::Base
  belongs_to :city
end
class City < ActiveRecord::Base
  belongs_to :state
end

现在我想找到所有帖子以及他们的城市和所属的州。我写了下面的查询来获取他们的城市的帖子,但没有关于如何在同一个查找器中获取城市的相应状态的想法:

@post = Post.find:all,:include =&gt; [:城市]

感谢任何帮助。

感谢。

2 个答案:

答案 0 :(得分:9)

Post.all( :include => { :city => :state })

答案 1 :(得分:4)

Rails将为您处理此问题,这要归功于belongs_to关系,此信息会自动获取。

@posts = Post.find(:all)

@posts现在包含逻辑,以获取所有回复帖子的citycity.state详细信息。

如果您打算使用所有这些详细信息,您应该急切加载它们,:include => { :city => :state }Farrel并且表示格式化。

注意:为了让它以相反的方式工作(并且它也被认为是良好的模型定义行为),您还应该添加has_manyhas_one关联。请参阅Association Basics Guide