ruby-on-rails - Has_many 通过 Rails 5 中的参数

标签 ruby-on-rails

我正在努力管理一个具有整数的连接表,该整数的目的是用作相关记录的索引或标签。假设连接表是

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 :

  1. 准确选择给定值为 position 的一个元素.
  2. 使用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/

相关文章:

ruby-on-rails - git push remote 在代理后面的问题

ruby-on-rails - 创建名称助手,将名字和姓氏分开

ruby-on-rails - 是否在 Gemfile 中强制指定 Rails 应用程序的 Gem 版本

ruby-on-rails - 事件记录 :has_many associations and === operator

mysql - Rails + 回形针范围错误

javascript - Rails/JS - 在某些情况下,G+ 登录按钮仅在页面重新加载后有效

ruby-on-rails - Rails has_many :through validation nested records count by specific param

ruby-on-rails - 如何为这个公共(public)方法编写规范(使用 RSpec)?

ruby-on-rails - Accepts_nested_attributes_for 不更新嵌套表

ruby-on-rails - 以编程方式生成新用户(验证逻辑)