Я пытаюсь привести список пользователей, для которых был принят «запрос» для выбора пользователем. Я настроил коллекцию, и на странице просмотра отображается либо идентификатор пользователя, когда я вставляю :user_id
, либо его показы <User:0x007fbdrf252a60>
, когда я вставляю user
. Я попытался вставить :name
, но он возвращает ошибку «неопределенное имя метода».
В настоящее время моя форма выглядит так:
<%= form_for :event_logs, url: event_logs_path do |f| %>
<%= f.select :user_id, options_from_collection_for_select(@user_event_log, :id, :name ) %>
<%= f.hidden_field :event_id, :value => @event.id %>
<%= f.submit 'Send', class: 'btn btn-success' %>
<% end %>
А в контроллере для шоу его:
@user_event_log = RequestLog.usr_req_by current_user
user_req_by
в модели: scope :usr_req_by, ->(user) { where(user_id: user.id) }
Если понадобится больше информации, я буду рад добавить ее. Спасибо
Модель пользователя:
class User < ApplicationRecord
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :validatable
validates_presence_of :name
has_many :request_logs, dependent: :destroy
acts_as_messageable
def first_name
self.name.split.first
end
def last_name
self.name.split.last
end
end
Модель журнала запросов:
class RequestLog < ApplicationRecord
enum status: { accepted: 0, rejected: 1 }
belongs_to :user, optional: true
belongs_to :request, optional: true
validates :user_id, presence: true
validates :request_id, presence: true
scope :usr_req_by, ->(user) { where(user_id: user.id) }
scope :req_itp, ->(requests) { where(request_id: requests) }
end