Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/65.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
Ruby on rails 如何获取反向关联字段,尤其是中间表_Ruby On Rails_Activerecord_Associations - Fatal编程技术网

Ruby on rails 如何获取反向关联字段,尤其是中间表

Ruby on rails 如何获取反向关联字段,尤其是中间表,ruby-on-rails,activerecord,associations,Ruby On Rails,Activerecord,Associations,我想知道如何得到反向关联字段,给定一个模型上的字段。例如,如果用户模型对角色模型有一个外键(即属于),并且角色模型与用户模型有适当的关联,那么AFAIK,设置用户。角色等同于将用户添加到角色。用户。我试图找出如何通过编程发现Role.users是User.Role的反向关系 我知道如何使用模型的反射获取ActiveRecord关联。在我给出的示例中,User.reflections['role']将产生所属的关联,而role.reflections['users']将产生在“另一边”有许多反射。

我想知道如何得到反向关联字段,给定一个模型上的字段。例如,如果
用户
模型对
角色
模型有一个外键(即
属于
),并且
角色
模型与
用户
模型有适当的
关联,那么AFAIK,设置
用户。角色
等同于将用户添加到
角色。用户
。我试图找出如何通过编程发现
Role.users
User.Role
的反向关系

我知道如何使用模型的反射获取ActiveRecord关联。在我给出的示例中,
User.reflections['role']
将产生
所属的
关联,而
role.reflections['users']
将产生
在“另一边”有许多
反射。我想知道如何以编程方式计算出
Role.users
User.Role
的反向关联,反之亦然。在Django中,这通常通过检查
相关的\u name
属性来完成

现在我正在检查反射,并通过使用反射对象的
外键
属性来确定反射是否在另一侧。例如,
User.reflections['role'].foreign\u key
role.reflections['users'].foreign\u key
都将返回
role\u id

但是,这对某些关联不起作用,例如一些多对多或
:通过
关联。如果一个模型与同一个模型有多个关联,我尝试过的其他一些方法就不起作用


如何确定另一个模型上的哪个反射/字段与特定模型上的给定字段相对应?

您可以使用
User.reflections['role'].
的反向。要使用
:通过
关联-您需要在两个模型上明确
反向的点。比如说

class标记
您可以使用
User.reflections['role']。与
相反。要使用
:通过
关联-您需要在两个模型上明确
反向的点。比如说

class标记
我想你可能需要明确的
:即使是正常的
所属的
/
也有很多的
关联,因为在我的环境中,
User.reflections['role'].
的反向返回
nil
。如果你没有正确设置
inverse\u
设置,它将返回
nil
,我同意你的看法。这很糟糕,因为太多rails应用程序依赖ActiveRecord来为它们建立关联,但在反射中,以编程方式进入“另一边”会很好。我还发现,对于HABTM来说,比较另一个模型的反射,看哪一个的
关联\u外键
与源反射的
外键
匹配是很有用的。我认为你可能需要显式的
:即使是正常的
所属的
/
也有许多
关联,因为在我的环境中,
User.reflections['role'].inverse\u of
返回
nil
。如果您没有正确设置
inverse\u of
设置,它将返回
nil
。是的,我同意您的看法。这很糟糕,因为太多rails应用程序依赖ActiveRecord来为它们建立关联,但在反射中,以编程方式进入“另一边”会很好。我还发现,对于HABTM,比较另一个模型的反射,以查看哪一个的
association\u foreign\u key
与源反射的
foreign\u key
匹配是有用的。