Мы пытаемся создать конечную точку, которая позволяет пользователю просматривать все свои личные смены во всех календарях.В настоящее время у меня есть следующий синтаксис в контроллере смен:
def myschedule
@user = current_user
if @user
@shifts = Shift.where("end_time > ?", Time.current).order("start_time ASC").limit(100)
render "/shifts/index2.json", status: :ok
else
render json: ('You do not have access to these shifts'), status: :unauthorized
end
end
Это, как и ожидалось, возвращает первые 100 смен по всем календарям, но для всех пользователей .Каково было бы наилучшее направление для поиска способа ограничить смены только для определенного пользователя.Я был бы признателен за некоторые указания в правильном направлении.Рендеринг json представляет собой массив хэшей.
Насколько отношения идут на уровне модели:
сдвиг пользователей has_many, с помощью пользовательских смещений пользователь has_many смещает, с помощью пользовательских смещений и пользователь, и смещение has_manyusershift и usershift принадлежат как user, так и shift.
Я попытался:
def myschedule
@user = current_user
if @user
@shifts = Shift.where("end_time > ?", Time.current).order("start_time ASC").limit(100).include?(@user)
render "/shifts/index2.json", status: :ok
else
render json: ('You do not have access to these shifts'), status: :unauthorized
end
end
, который вернул неопределенную карту методов для false: Falseclass в моем представлении json.
Вотjson view:
json.shifts @shifts do |shift|
json.shift_id shift.id
json.start_time shift.start_time
json.end_time shift.end_time
json.calendar_name shift.calendar.name
end
Я также пытался бросить .joins (@user) в конец @shifts, который возвратил неизвестный класс User для json.
ТакжеЯ попытался:
def myschedule
if current_user
@shifts = Shift.where("end_time > ?", Time.current).order("start_time ASC").limit(100).where(:user_id => params[:user_id])
render "/shifts/index2.json", status: :ok
else
render json: ('You do not have access to these shifts'), status: :unauthorized
end
end
, что привело к следующей ошибке в журнале сервера
ActionView::Template::Error (PG::UndefinedColumn: ERROR: column
shifts.user_id does not exist
LINE 1: ...ERE (end_time > '2018-10-13 14:52:02.693352') AND "shifts"."