Страницы

Поиск по вопросам

суббота, 11 апреля 2020 г.

Ассоциации Rails - Автоматический выбор текущего пользователя как автора поста

#ruby #ruby_on_rails

                    
Доброго времени суток! Подскажите, пожалуйста, имеются две модели:
class User < ActiveRecord::Base
  has_many :hotels
end

и
class Hotel < ActiveRecord::Base
  belongs_to :user
end

Миграция:
class AddUserIdToHotels < ActiveRecord::Migration
  def change
    add_column :hotels, :user_id, :integer
  end
end

Форма создания нового поста про отель:
<%= simple_form_for(@hotel, :html => {:multipart => true}) do |f| %>
  <%= f.input  :title %>
  <%= f.input  :star_rating, collection: 1..5 %>
  <%= f.input  :room_description, as: :text %>
  <%= f.input  :price_for_room %>
  

Address

<%= f.select :hotels_country, priority: ["Ukraine", "Russia", "Europe"] %> <%= f.input :state %> <%= f.input :city %> <%= f.input :street %> <%= f.input :breakfast_included %> <%= f.input :photo, as: :file %> <%= f.association :user %> <%= f.button :submit, class: "btn btn-large btn-primary" %> <% end %> Вопрос: как реализовать, чтобы при создании поста про новый отель в таблице hotels в поле user_id был текущий пользователь? При выше приведенной реализации получается, что в строке <%= f.association :user %> есть выпадающий список всех пользователей из таблицы users, а необходим только текущий, чтобы каждый пост автоматически был привязан к пользователю, который его создал.


Ответы

Ответ 1



например в контроллере перед сохранением отеля: @hotel.user_id = current_user.id можно и через hidden_field в форме, только этот вариант не секурен

Ответ 2



Можно проще? @hotel = current_user.hotel.create(params)

Комментариев нет:

Отправить комментарий