Sql 如何在执行复杂联接时对其他活动记录模型隐藏列名的详细信息
以下是我在目标类中编写的查找器方法: 像这样让目标类知道ResourceObjectiveLink的resource_id列名感觉很混乱。我尝试像这样在ResourceObjectiveLink类上创建一个作用域,但当我将其链接到Objective中的以下\u-objectives\u-for\u-user方法中时,它找不到它:Sql 如何在执行复杂联接时对其他活动记录模型隐藏列名的详细信息,sql,ruby-on-rails,activerecord,Sql,Ruby On Rails,Activerecord,以下是我在目标类中编写的查找器方法: 像这样让目标类知道ResourceObjectiveLink的resource_id列名感觉很混乱。我尝试像这样在ResourceObjectiveLink类上创建一个作用域,但当我将其链接到Objective中的以下\u-objectives\u-for\u-user方法中时,它找不到它: 隐藏此信息的正确方法是什么?为什么不能只使用ActiveRecord关系?不仅仅是 User has_many :resource_objective_links Us
隐藏此信息的正确方法是什么?为什么不能只使用ActiveRecord关系?不仅仅是
User has_many :resource_objective_links
User has_many :objectives, through: :resource_objective_link
Objective has_many :resource_objective_links
Objective has_many :users, through: :resource_objective_links
ResourceObjectiveLink belongs_to :user
ResourceObjectiveLink belongs_to :objective
# And now you can use:
# user = User.find(some_user_id)
# user.objectives
# => will perform database join and return all Objectives for ResourceObjectiveLink with correct user.id
scope :for_resource, ->(resource) { where(resource_id: resource.id) }
User has_many :resource_objective_links
User has_many :objectives, through: :resource_objective_link
Objective has_many :resource_objective_links
Objective has_many :users, through: :resource_objective_links
ResourceObjectiveLink belongs_to :user
ResourceObjectiveLink belongs_to :objective
# And now you can use:
# user = User.find(some_user_id)
# user.objectives
# => will perform database join and return all Objectives for ResourceObjectiveLink with correct user.id