Эй, я просто возвращаюсь в рельсы, и я забыл много вещей, необходимых для работы с некоторыми ассоциациями.Rails/Arel User.where (: id =><Some Other Table> .user_id)
Проблема:
У меня есть две таблицы, Customer
с fiels id
и user_id
и User
с полем id
. Я хочу получить массив Users
, так что Customer
user_id
является id
User
. Я знаю, как это сделать в SQL, но забыл, как это сделать в Ariel.
Редактировать
Так что я думаю, что нужно объяснить немного больше. Я занимаюсь существующим проектом. Между пользователями и клиентами существует взаимно однозначное отношение, однако только некоторые пользователи имеют связанный с ним объект клиента, поэтому вызов user.customer
будет возвращать nil
большую часть времени. Мне нужно отредактировать страницу, в которой перечислены все пользователи, но теперь мне нужно указать только пользователей, у которых есть запись о клиенте.
Отношения уже созданы предыдущим разработчиком:
class Customer
belongs_to :user, :class_name => "Refinery::User"
end
Refinery::User.class_eval do
has_one :customer
end
и у меня есть следующий код в мой контроллер:
def index
# i need to return an array of users, such that the only
# users in this array are the ones with a non-nil customer.
@users = Refinery::User.paginate(:page => params[:page])
end
Любая помощь будет здорово, спасибо!
смотрите мои правки. – DJTripleThreat
Спасибо за помощь. Основная таблица для клиента - «cust» (я не выбрал это!), Поэтому я попробовал то, что вы сказали, а также '.where (« cust.id IS NOT NULL ")' и получил эту ошибку: 'PG :: Ошибка: ERROR: отсутствует запись FROM-clause для таблицы" cust "' Если имеет значение, если имя класса для 'customer' is' Refinery :: Akouo :: Клиент? – DJTripleThreat
Может быть, мне нужно включить клиентов в объединение? Похоже, это результат SQL: 'SELECT COUNT (*) FROM« refinery_users »WHERE (customer.id IS NOT NULL)' – DJTripleThreat