Я новичок в Ruby on Rails, и у меня есть одна проблема с более сложными запросами базы данных. Я использую рельсы 4Расширенный запрос базы данных rails 4
У меня есть модель пользователя, каждый пользователь имеет одно местоположение в таблице местоположения.
Вторая таблица - пользовательские отношения. В пользовательской таблице есть поля user_id, friend_id и id друга. Пользователь имеет отношение к этой таблице следующим образом: у каждого пользователя много друзей и друзей.
class User
has_one :location, dependent: :destroy
has_many :user_friendships
has_many :friends, through: :user_friendships
class user_friendship
belongs_to :user
belongs_to :friend, class_name: 'User', foreign_key: 'friend_id'
Теперь я хотел бы, чтобы отобразить все дружеские отношения пользователей, которые имеют отношения с этим пользователем, но только те дружеские отношения, где друг обновила свое местоположение в последние 20 минут.
Так что я попытался
time = params[:timestamp]
endtime = time.to_i - 1200
friends = UserFriendship.where(user_id: <user.id>)
updted = friends.include(:users).include(:location).where(updated_at: time..endtime)
или это
friends = UserFriendship.where(user_id: <user.id>)
updted = friends.include(:users).include(:location).where("created_at <= :start_date AND created_at >= :end_date",
{start_date: time, end_date: endtime})
, но я получаю эту ошибку: wrong argument type Symbol (expected Module)
, но проблема в том, что я даже не знаю, если это право.
Чего я хочу достичь, это найти все дружеские отношения с пользователем, но только те дружеские отношения, в которых друзья обновили свое местоположение за последние 20 минут.
Спасибо за вашу помощь, но ваш ответ показал мне, что я спросил мой вопрос неверно. Извините, я обновил свой вопрос. что я хотел знать. Как найти все пользовательские дружеские отношения в таблице user_friendships с друзьями, которые обновили свое местоположение за последние 20 минут. – Santar