ruby-on-rails - 如何在多态场景中获取关联记录
问题描述
我有一个像
class Manager
has_many :employees
has_many :transactions, as: :transactable
end
class Employee
belongs_to :manager
has_many :transactions, as: :transactable
end
class Transaction
belongs_to :transactable, polymorphic: true
end
有没有更好的方法来获得由Manager
or/and his进行的所有交易employees
?任何帮助,将不胜感激。谢谢!
解决方案
class Transaction
def self.belonging_transactions(manager)
where(
"(transactable_type = 'Manager' AND transactable_id = ?) OR (transactable_type = 'Employee' AND transactable_id IN ?)",
manager.id,
manager.employees.ids
)
end
end
您可以通过以下方式获取所有经理及其员工的交易,
Transaction.belonging_transactions(manager) # here manager is Manager class object
可以通过添加(使用+
)两个where
查询来获得结果,但它将是Array
而不是ActiveRecord::Relation
推荐阅读
- sqlite - 获取实例的sqlite查询在连接时没有返回项目
- node.js - 有没有办法在没有管理面板的情况下部署 Strapi 项目?
- php - PHP通过get url上传图片文件
- c# - GridView 的 UI 中未显示转换后的值
- amazon-web-services - Jenkins AWS ECR 登录失败
- javascript - 数组中的随机项,而不在 Javascript 中重复元素
- python - 如何遍历链接的 csv 文件以使用 BeautifulSoup 和请求抓取网站,而不是获取 requests.exceptions.InvalidSchema?
- javascript - 如何在Javascript中为幻灯片同步上一个和下一个按钮?
- javascript - 即使对于简单的整数值,if 语句也总是返回 true
- batch-file - 仅使用批处理脚本重命名文件夹