我有这 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
关联中使用:dependent => :destroy
class BikeActionGroup < ActiveRecord::Base
has_many :bike_action_groups_slas, :dependent => :destroy
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, :dependent => :destroy
has_many :bike_action_groups, through: :bike_action_groups_slas
end
有关更多信息,请浏览此 Link
关于ruby-on-rails - 无法通过 Rails 3.2 中的关联模型添加或删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37342252/