如何设置自定义ActiveRecord关联?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何设置自定义ActiveRecord关联?相关的知识,希望对你有一定的参考价值。
我有三个需要连接的模型。
这些模型是:
Container
Item
ItemProperty
我无法弄清楚如何找到属于容器的所有物品。每个Item都有许多与之关联的ItemProperties。在这些Item属性中,至少有一个具有包含以下数据的属性。
# id: 2164
# property_key: container_id
# property_value_integer: 1
# world_item_id: 438
# property_value_type: integer
# is_active: 1
如何根据包含的ItemProperty找到属于容器的项目
property_key: container_id
property_value_integer: 1 (this is the id of the container)
请帮帮忙,谢谢!
现任协会:
class ItemProperty < ApplicationRecord
belongs_to :item, :class_name => 'Item', :foreign_key => 'item_id'
end
class Item < ApplicationRecord
has_many :item_properties
end
答案
试试这个。这里的关键是has_many xxx,:through => yyy
class Container < ApplicationRecord
belongs_to :item #or has_many :items depending on your needs
has_many :item_properties, :through => :items
end
class Item < ApplicationRecord
has_many :item_properties
end
class ItemProperty < ApplicationRecord
belongs_to :item, :class_name => 'Item', :foreign_key => 'item_id'
end
然后,您可以查询所选项属性的容器。希望能帮助到你。
以上是关于如何设置自定义ActiveRecord关联?的主要内容,如果未能解决你的问题,请参考以下文章
条纹自定义付款表单:ActiveRecord::RecordNotFound
如何在 VSCode 设置中将文件关联设置为自定义 .env 文件名?