【问题标题】:ActiveRecord: Chaining from another modelActiveRecord:从另一个模型链接
【发布时间】:2012-09-13 18:46:36
【问题描述】:

我有一个标签和任务的标签系统(标签通过TagTask有很多任务,反之亦然)

我想做的是创建一个范围,该范围返回所有提供的标签中的所有任务。所以,在 Tag 模型中,它看起来像这样:

def self.combined_tasks(tag_ids)
    tasks = []
    tag_ids.each do |tag_id|
      tasks << self.find(tag_id).tasks
    end

    tasks.inject { |result, elem| result & elem }
end

困难在于,我想不出任何可链接的方式来在 Task 模型中创建一个范围来有效地做到这一点。通过

将其转交给标签模型
def self.in_all_tags(tags_ids)
  tags = Tag.combined_tasks(tag_ids)
end

有效,但可以理解的是,它似乎无法链接到其他范围。

任何建议表示赞赏

【问题讨论】:

    标签: ruby-on-rails activerecord


    【解决方案1】:

    试试:

    Task.joins(:tag_tasks).where(tag_tasks: {tag_id: tag_ids}).uniq
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-30
      • 2019-11-08
      • 2018-06-17
      • 2016-02-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多