Активная запись запросов - PullRequest
0 голосов
/ 08 июля 2011

У меня связаны две следующие модели:

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>

Язык модели имеет переменную name: string, которую я использую для запроса активной записи.

У меня есть сомнение в том, как я могу сделать этот запрос из контроллера сообщений, чтобы получить нужные сообщения с полем: language.name == "english".

Я пробовал это:

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

, а также это:

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

Надеюсь, я хорошо объяснил проблему, я еще новичок. Ах! я также знал бы, что было бы лучше в этом случае использовать: "все" или "где" ??. Заранее большое спасибо.

1 Ответ

1 голос
/ 08 июля 2011

Вам необходимо выполнить соединение: 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...