Я просмотрел некоторые из похожих сообщений SO, касающихся этого, но я изо всех сил пытаюсь понять это.
У меня есть связь между проектами и пользователями. Я пытаюсь найти все проекты, к которым не принадлежит конкретный пользователь, но я не знаю, как это сделать.
Я пробовал такие вещи:
Project.where('project_id != ?', user.id)
Но это тоже явно неправильно.
Я использую рельсы 3.2.x
Во многих ответах, касающихся этого, упоминаются области действия, но я не сталкивался с ними раньше (я все еще очень новичок в Rails).
Я только что нашел этот пост с одним ответом предлагаю: Project.where('id not in (?)', user.projects)
который, кажется, работает, за исключением случаев, когда user.projects
пуст. Я пытаюсь Project.where('id not in (?)', (d.projects.empty? ? '', d.projects))
, как это предлагается в ветке комментариев ответа Джозефа Кастро, но это дает мне синтаксическую ошибку во втором d.projects
.
Изменить
Фрагмент модели проекта, относящийся к пользователям
class Project < ActiveRecord::Base
attr_accessible ...
has_and_belongs_to_many :users, :before_add => :validates_unique
а потом
class User < ActiveRecord::Base
attr_accessible ...
has_and_belongs_to_many :projects
<>
(SQL) вместо!=
(Ruby)? - person Michael Durrant   schedule 10.08.2013