Отобразить модель A на модель B в контроллере - PullRequest
0 голосов
/ 26 февраля 2020

У меня есть две неассоциированные модели, которые обычно ассоциируются. Это, однако, своего рода странный случай, когда я не хочу, чтобы они были связаны.

В представлении, я могу сделать это:

<%= @user.each do |user| %>
   <%= Option.where(:id => user.option_1).or(Option.where(:id => user.option_2).each do |option| %>
   <% end %>
<% end %>

Как я могу переместить этот лог c на контроллер?

Если я, в контроллере сделать

@user = User.all.map do |user|
   @options = Option.where(:id => user.option_1).or(Option.where(:id => user.option_2)
end

Результаты @options не отображаются на объект @user так же, как это было бы @user.options, если модели были связаны.

Есть ли способ имитировать c эту функциональность, когда модели не связаны, чтобы при I oop - <% @users.each do %> я мог получить доступ к <% @options.each do %> в этой области так же, как если бы :options принадлежал :user, а :user имел множество :options

, чтобы конечный результат в представлении выглядел так:

<% @users.each do |user| %>
  <% @options.each do |option| %>
      #Outputs the result of Option.where(:id => user.option_1).......
  <% end %>
<% end %>

1 Ответ

0 голосов
/ 26 февраля 2020

Так как вы хотите l oop options, вы должны сделать это

В контроллере

@options = Option.joins("INNER JOIN users ON users.option_1 = options.id OR users.option_2 = options.id").distinct

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

<% @options.each do |option| %>
<% end %>

Дайте это попытка.

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