我正在努力管理一个具有整数的连接表,该整数的目的是用作相关记录的索引或标签。假设连接表是
class Pair < ActiveRecord::Base
belongs_to :owner
belongs_to :element
validates_presence_of :position
end
隐含设置
class Element < ActiveRecord::Base
has_many :pairs
has_many :owners through :pairs
end
class Owner < ...
has_many :pairs
has_many :elements through :pairs
end
position 是对所有者拥有的元素进行排名的权重或索引
现在我要,收藏owner.elements
:
- 准确选择给定值为
position
的一个元素. - 使用
owner.elements<<
在已知元素和所有者之间创建新的配对,但同时为链接赋予权重/位置。
唯一认为我能够锻炼的是忽略并直接使用 join_table,重载 []
运营商对它的糖。人们可能期望存在一些更简单的解决方案,也许使用带参数的范围,但我不知道如何将位置属性传递给 create
或 <<
操作。
鉴于元素由所有者和位置完美识别,has_one through
中具有某种动态参数的解决方案也是有效的。
最佳答案
我认为您应该通过在模型中定义一个范围来尝试一些简洁的方法。
scope :by_position, ->(element) { joins(:pairs).where(pairs: { position: element.position}) }
给你一个想法,而不是你到底想做什么,但我希望这会导致你的要求。
关于ruby-on-rails - Has_many 通过 Rails 5 中的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56194631/