Я пытаюсь узнать, как писать области в Rails 5.Rails 5 - как написать область
У меня есть модель пользователя и модель предложения. Ассоциации являются:
Пользователь:
has_many :proposals
Предложение:
belongs_to :user
В моей модели предложения, Im пытаясь выяснить, как написать сферу, которая находит предложения, которые принадлежат пользователю которые их создали.
Я пытаюсь:
scope :proponent, -> { where(user_id: user.id) }
Я попробовал миллион вариаций на это, но я не могу найти тот, который работает.
Эта конкретная попытка дает эту ошибку:
2.3.1p112 :001 > Proposal.proponent
NameError: undefined local variable or method `user' for Proposal (call 'Proposal.connection' to establish a connection):Class
Я также попытался:
scope :proponent, -> { where('proposal.user_id = ?', user.id) }
ошибка, я получаю от этой попытки является:
undefined local variable or method `user' for #<Class:0x007fd3600eb038>
Я не знаю, что сообщение об ошибке означает, что первый или второй раз, когда я написал «пользователь» в моей попытке, неверен. Я не знаю, что означает «вызов». «Предложение» означает «.
Может ли кто-нибудь увидеть, что мне нужно сделать, чтобы проверить таблицу предложений, чтобы найти те, которые принадлежат определенному пользователю?
Почему бы вам просто не воспользоваться ассоциации у вас уже есть, и сделать 'user.proposals' ? –
Потому что я пытаюсь использовать Pundit - который принимает области. – Mel
Это [этот пандит] (https://github.com/elabs/pundit)? если это так, я не уверен, что упомянутые области являются областями рельсов. Из README он говорит: «Второй аргумент - это область действия, на которой выполняется какой-то запрос. Обычно это класс ActiveRecord или ActiveRecord :: Relation, но это может быть что-то другое». Поэтому использование user.proposals должно быть прекрасным. –