gpt4 book ai didi

ruby-on-rails - 关联关联的 Rails 作用域

转载 作者:行者123 更新时间:2023-12-05 01:46:01 24 4
gpt4 key购买 nike

快速提问。我试图建立一个范围但没有成功。我有这些模型

class User < ActiveRecord::Base

belongs_to :store, required: true
has_many :visits
has_one :company, through: :store

end

class Store < ActiveRecord::Base
belongs_to :company, required: true
has_many :users, dependent: :nullify
end

class Company < ActiveRecord::Base
has_many :stores, dependent: :destroy
has_many :users, through: :stores
end

class Visit < ActiveRecord::Base
belongs_to :user
end

编辑

现在我需要使用 Chartkick Gem 绘制一些图表,最好的方法是从 Visit 模型开始。

我在用

Visit.group_by_day("started_at", range: 3.month.ago.midnight..Date.today.midnight, format: "%b %-e").order("day asc").count

如果我需要所有访问,但现在我还需要过滤公司和商店的访问。

我不明白如何获得属于特定商店或特定公司的用户的所有访问。

最简单的方法是:

Visit.where("user_id IN (?)", company.users.ids)  

它可以工作,但我不想写一个更好的范围,而我写的那个不工作。

  class Visit < ActiveRecord::Base
belongs_to :user

scope :user_by_store, ->(store_id) {
joins(:user).where('user.store_id' => store_id)
}
end

最佳答案

我认为你应该能够做到:

scope :by_company, -> (company) { joins(:company).where(companies: {id: company}) }

关于ruby-on-rails - 关联关联的 Rails 作用域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38445538/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com