ruby-on-rails - 无法通过 Rails 3.2 中的关联模型添加或删除

标签 ruby-on-rails ruby ruby-on-rails-3.2 associations has-many-through

我有这 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/

相关文章:

ruby-on-rails - TCP 套接字 IO 卡住

ruby-on-rails - rails 模型的默认值

ruby-on-rails - Rails 4 + Postgresql - 加入具有 2 个条件的表

ruby - 通过 Rmagick 将图像附加到 PNG

ruby - 不包括在阵列中的液体过滤器?

ruby-on-rails - 监控 Sidekiq 作业完成情况的最佳方式?

ruby-on-rails - 安装 devise gem 时出现拼写错误后未初始化的常量错误消息

ruby-on-rails - 未定义方法 `empty?' 为 nil :NilClass

ruby-on-rails - 将Markdown与Rails结合使用

css - Assets - 未加载 Css