我的设置:
class Event
belongs_to :task
end
class Task
has_many :document_tasks
end
class DocumentTask
belongs_to :document, polymorphic: true
belongs_to :task
end
我想这样做:
Event.joins(:task).joins(:document_tasks).where("document_tasks.document_type = ? AND document_tasks.document_id = ?", 'Contact', 1) }
但这会产生以下错误:
找不到名为'document_tasks'的关联 FullcalendarEngine ::活动;也许你拼错了?
这样可行:
task_ids = Event.all.collect {|event| event.task.id }.compact
document_tasks = DocumentTask.where(task_id: task_ids, document_type: 'Contact', document_id: 1)
event_tasks = Task.where(id: document_tasks.pluck(:task_id)
events = event_tasks.map(&:events).flatten
但显然它很长,我不能很好地放入范围。是否有一种干净的方式来实现我想要的目标?