У меня есть приложение для рельсов. Я хотел бы отображать пользователя только в том случае, если профиль существует (профиль пользователя has_one). Согласно моим лучшим знаниям, поскольку у меня есть группа в моем index.html.erb, я не могу просто использовать <%, если user.profile%>, поэтому я хочу отфильтровать его в контроллере.рельсы запрос только, если существует вложенный ресурс
Как изменить запрос для извлечения только тех пользователей из db, у кого есть профиль?
В общем, как лучше всего проверить, существует ли вложенный ресурс? Выполнять это в контроллере с запросом или просто делать это в представлении?
пользователей/controller.rb
def index
@q_users = User.ransack(params[:q])
@users = @q_users.result(distinct: true).includes(:profile).paginate(page: params[:page], per_page: 12)
end
index.html.erb
<div class="user-profile-index" style="padding-right:20px;padding-left:20px;">
<% @users.each_slice(3) do |users_for_row| %>
<div class="row">
<%= render :partial => "user", :collection => users_for_row, as: :user %>
</div>
<% end %>
</div>
_user.html.erb
<div class="col-md-4">
<%= link_to user do %>
<div class="panel panel-info">
<div class="panel-heading">
</div>
<div class="panel-body">
<% if user.profile %>
<% if user.profile.avatar %>
<%= image_tag user.profile.avatar.url(:base_thumb), class: "avatar" %>
<% end %>
<h4><%= user.profile.first_name %> <%= user.profile.last_name %></h4>
<h5><%= user.profile.company %></h5>
<% end %>
<h5><%= user.email %></h5>
</div>
</div>
<% end %>
</div>
user.rb
has_one :profile, dependent: :destroy
profile.rb
belongs_to :user
Является ли 'профиль' полем на' user' или это отдельная модель? Можете ли вы показать соответствующий код модели? – Patrick
Patrick, добавленные модели –