Active Record查询belongs_to

时间:2011-07-08 17:34:08

标签: ruby-on-rails-3 activerecord associations

我有以下两个相关模型:

class Post < ActiveRecord::Base
  belongs_to :language
end

class Language < ActiveRecord::Base
  has_many :posts
end

从视图中我有一个按语言过滤帖子的链接:

<div id="english"><%= link_to "English", {:controller => 'posts', :action => 'search_result', :language => "english"} %></div>

模型语言有一个变量名:string是我用来进行活动记录查询的字符串。

我怀疑的是我如何从帖子控制器中查询具有字段的正确帖子:language.name ==“english”。

我试过了:

@posts = Post.all(:conditions => ["language.name = ?", params[:language]])

还有这个:

@posts = Post.where(:language.name => params[:language])

希望我已经很好地解释了这个问题,我还是个新手。啊!我也知道在这种情况下使用它会更好:“all”或“where”??。 非常感谢。

1 个答案:

答案 0 :(得分:1)

您需要加入:http://guides.rubyonrails.org/active_record_querying.html#specifying-conditions-on-the-joined-tables

如果我已正确理解您的模型/数据库结构,则ActiveRecord调用应如下所示:

Post.joins(:language).where('languages.name' => params[:language])

希望有所帮助。

PS。如今,where电话是首选方法。