Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何在执行复杂联接时对其他活动记录模型隐藏列名的详细信息_Sql_Ruby On Rails_Activerecord - Fatal编程技术网

Sql 如何在执行复杂联接时对其他活动记录模型隐藏列名的详细信息

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

以下是我在目标类中编写的查找器方法:

像这样让目标类知道ResourceObjectiveLink的resource_id列名感觉很混乱。我尝试像这样在ResourceObjectiveLink类上创建一个作用域,但当我将其链接到Objective中的以下\u-objectives\u-for\u-user方法中时,它找不到它:


隐藏此信息的正确方法是什么?

为什么不能只使用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