我有一个具有多个外键的表ProductOrder,这些外键链接到SecurityUser表。我试图找出一种配置模型的方法,以便在从查询返回ProductOrder时可以加载多个SecurityUser外键。
这是我的product_order.rb的一部分:
class ProductOrder < ActiveRecord::Base
self.table_name = 'product_order'
belongs_to :security_user, :class_name => 'SecurityUser', :foreign_key => :ordered_by_client_user
belongs_to :security_user, :class_name => 'SecurityUser', :foreign_key => :staff_engager1
belongs_to :security_user, :class_name => 'SecurityUser', :foreign_key => :staff_engager2
belongs_to :security_user, :class_name => 'SecurityUser', :foreign_key => :last_updated_by_user
这是security_user.rb的相应部分:
class SecurityUser < ActiveRecord::Base
self.table_name = 'security_user'
has_many :product_orders, :class_name => 'ProductOrder'
这些模型是使用设计用于从数据库模式创建模型的gem生成的。
因此,我想做的是从ActiveRecord查询中加载ProductOrder,然后从该结果中我可以访问一些SecurityUser对象(例如ordered_by_client_user或staff_engager1)中的信息。
我正在将应用程序从Java重写为RoR,因此我以前使用了Hibernate和JPA查询,并且习惯于使用查询加载所有对象。我每次都尝试了以下相同的结果:
ProductOrder.includes(:security_user)
ProductOrder.joins(:security_user)
ProductOrder.eager_load(:security_user)
ProductOrder.preload(:security_user)
但是问题在于RoR不知道要加载哪个外键。我想避免仅在模型上使用“ get”方法来访问这些外键,但是如果那是需要的,那就这样吧。我当前的解决方法是构建动态的,混乱的.joins()语句。
任何建议或见解将不胜感激。
问题是您security_user
在ProductOrder
模型中使用了相同的名称associations
。因此,它可能无法正常工作。
您应该将这些名称(1.e,security_user
)更改为一些有意义的名称,以使其正常工作。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句