Рельсы СОВМЕСТНЫЕ СТОЛЫ - PullRequest
       4

Рельсы СОВМЕСТНЫЕ СТОЛЫ

1 голос
/ 27 ноября 2008

У меня есть следующий SQL-запрос:

ВЫБРАТЬ article.name, article.price, users.zipcode ИЗ статей INNER Присоединиться к пользователям ON users.id = Articles.user_id WHERE векторы @@ to_tsquery ('crime') ORDER BY article.price ASC

И я хотел бы написать его внутри метода find из класса ActiveRecord с именем Articles (Articles, принадлежащего_пользователю). В основном я хочу искать Статьи и получить доступ к свойству почтового индекса от Пользователя (пользователь has_many Articles)

Я написал следующую версию, но я не уверен, что она работает, потому что в ответ я не получаю никакой информации о почтовом индексе пользователя.

a = Article.find (: все,: условия => "векторы @@ to_tsquery ('crime')",: joins =>: пользователь,: order =>: цена,: include =>: пользователь)

Но я понятия не имею, как получить доступ к информации о почтовом индексе. как я могу получить доступ к этой информации? это правильный подход?

С уважением,

Victor

1 Ответ

2 голосов
/ 27 ноября 2008

Если вы соединили Articles и Users, как вы сказали выше, это должно быть довольно просто:

@articles = Article.find(:all, :conditions => "…", :include => :user)

Тогда, по вашему мнению, вы можете сделать:

<ul>
<% for each article in @articles do %>
  <li><%= article.user.zipcode %></li>
</ul>
<% end %>

Это работает, потому что Rails создает свойство для родительского объекта (User) в модели (Article) - вы можете узнать больше об этом в документации API . Это работает даже без указанного выше ключа «include», но его исключение будет означать запрос к базе данных на каждом этапе цикла.

...