【发布时间】:2016-09-17 10:58:13
【问题描述】:
我有这 3 个模型:
class BikeActionGroup < ActiveRecord::Base
has_many :bike_action_groups_slas
has_many :slas,through: :bike_action_groups_slas
end
class BikeActionGroupsSla < ActiveRecord::Base
belongs_to :bike_action_group
belongs_to :sla
end
class Sla < ActiveRecord::Base
has_many :bike_action_groups_slas
has_many :bike_action_groups, through: :bike_action_groups_slas
end
每当我尝试向sla.bike_action_groups 添加或删除某些内容时,它都会在删除或追加时给我一个 NoMethodError。我调试了sla.bike_action_groups 来查看它的内容,它没有返回一个bike_action_groups 数组,而是返回这个:
[#<BikeActionGroup id: 2, name: "Wheels">]
我不能对此调用任何方法,如删除,但如果我用to_a 将其转换为数组,我可以,只有这不会从实际的sla.bike_action_groups 中删除它,而是从转换后的数组中删除它
这是我用来添加或删除的方法:
@sla.bike_action_groups << @bike_action_group
@sla.bike_action_groups.delete(@bike_action_group)
【问题讨论】:
-
你能发布你正在使用的方法调用吗?这是 has_many through 的预期行为,但我想在发布我的答案之前看看您是如何尝试使用它的。
-
您在
sla.bike_action_groups上尝试过<<吗?可能如果 rails 3 不能添加适当的中间记录,你必须使用非直通关系...
标签: ruby-on-rails ruby ruby-on-rails-3.2 associations has-many-through