Ruby on Rails - User.tasks, когда пользователь может быть Task.creator или Task.owner - PullRequest
0 голосов
/ 16 сентября 2018
class User
  has_many :created_tasks, class_name: 'Task', inverse_of: :creator, foreign_key: 'creator_id'
  has_many :owned_tasks, class_name: 'Task', inverse_of: :owner, foreign_key: 'owner_id'
  ...
end

и

class Task
  belongs_to :creator,  class_name: 'User', inverse_of: :created_tasks
  belongs_to :owner,    class_name: 'User', inverse_of: :owned_tasks
  ...
end

Я хочу иметь возможность позвонить @user.tasks и получить @user.created_tasks и @user.owned_tasks

Есть ли способ ActiveRecord сделать это или мне нужно создать метод?

Я хочу вернуть объект ActiveRecord, но метод, который я могу придумать, будет выглядеть примерно так:

class User
  ...
  def tasks
    ary = []
    ary << created_tasks
    ary << owned_tasks
    ary
  end
end

Существует ли способ ActiveRecord (или просто лучший способ) сделать это?

1 Ответ

0 голосов
/ 16 сентября 2018

Я бы использовал такой метод экземпляра, как этот

def tasks
  created_tasks.or(owned_tasks)
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...