Рельсы 3 с соединениями среди 2 столов - PullRequest
0 голосов
/ 12 июня 2011

У меня есть 2 модели, автомобиль и регистрации .

class Car < ActiveRecord::Base
  belongs_to :Registration
end

class Registration < ActiveRecord::Base
  has_many :cars, :dependent => :destroy
  accepts_nested_attributes_for :cars, :reject_if => lambda { |a| a[:content].blank? }, :allow_destroy => true
end

В CarsController:

def index
  @cars = Car.all
  @cars2 = Car.all(:joins => :Registration)
end

В поле зрения:

<% @cars.each do |car| %>
  <tr>
    <td><%= car.twitter %></td>
    <td><%= car.facebook %></td>
    <td>
    <% @cars2.Registration.each do |h| %> #here is my problem
      <%= h.email %>
    <% end %>
    </td>
  </tr>
<% end %>

Это моё утверждение об автомобилях. Я пытаюсь распечатать электронную почту каждого владельца автомобиля. Электронный адрес находится в таблице Регистрация (регистрация модели) . Я не знаю, как сделать запрос к базе данных, который я хочу получить по электронной почте из таблицы Registrations, когда столбец registration_id в таблице Cars == id столбца таблицы Registrations ...

Так что я хотел бы спросить вас, если у вас есть совет, как это сделать ...

Ответы [ 2 ]

1 голос
/ 12 июня 2011

Вы получили ваши ассоциации заглавными буквами.Он должен быть маленьким, как этот

class Car < ActiveRecord::Base
  belongs_to :registration
end

Также вам не нужно назначать 2 переменные в контроллере

def index
  @cars = Car.includes(:registration)
end

и в представлении

<% @cars.each do |car| %>
  <tr>
    <td><%= car.twitter %></td>
    <td><%= car.facebook %></td>
    <td>
      <%= car.registration.email %> #here is my problem
    </td>
  </tr>
<% end %>
1 голос
/ 12 июня 2011

Используйте это вместо того, чтобы получить электронную почту:

<%= car.registration.email %>

Если вы хотите загружаться, используйте вместо этого следующую строку в вашем контроллере:

@cars = Car.includes(:registration)

Нет необходимости в @cars2.

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