ruby-on-rails - 更新表单在多对多关系中根本不起作用

标签 ruby-on-rails ruby oracle

在我的应用中,配方和成分之间存在多对多关系,一切正常但需要更新。

当我更新食谱时,我可以更新数据库中与食谱表关联的任何值,但不会修改成分

这是配方模型

class Recipe < ActiveRecord::Base
    after_create :save_implementos
    after_create :save_ingredientes
    has_many :HasImplemento, dependent: :destroy
    has_many :HasIngrediente, dependent: :destroy


has_many :ingredientes, through: :HasIngrediente
has_many :implementos, through: :HasImplemento


    #CUSTOM SETTER#
def ingredientes=(value)
        @ingredientes = value
end

def implementos=(value)
        @implementos = value
        #raise @implementos.to_yaml
end


private

#Guarda los implemenos de una receta
def save_implementos
    #raise self.id.to_yaml
    @implementos.each do |implemento_id|
        HasImplemento.create(implemento_id: implemento_id, recipe_id: self.id) 
    end
end

def save_ingredientes
    #raise @ingredientes.to_yaml
    @ingredientes.each do |ingrediente_id|
        HasIngrediente.create(ingrediente_id: ingrediente_id, recipe_id: self.id)
    end

end

这是配料模型

class Ingrediente < ActiveRecord::Base
    has_many :has_ingredientes
    has_many :recipes, through: :HasIngrediente
end

这是连接表

class HasIngrediente < ActiveRecord::Base
  belongs_to :recipe
  belongs_to :ingrediente
end

最佳答案

我想你只是忘记了 Recipe 模型中的 accepts_nested_attributes_for:

accepts_nested_attributes_for :ingredients

关于ruby-on-rails - 更新表单在多对多关系中根本不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34671874/

相关文章:

ruby-on-rails - 使用 Ruby 阅读 PostgreSQL Bytea 专栏

mysql - 在 Sequel 中编写复杂的 case 语句?

用于并发读写的 Ruby StringIO

在 where 子句中使用 sum() 进行 Oracle 查询

ruby-on-rails - ActiveRecord::Fixture::FixtureError: 表 "users"没有名为 "monkey"的列

ruby-on-rails - Ember.js/Rails和关联: how to submit back to Rails a record and its associations?

ruby-on-rails - 如何优雅地对 'nested' 哈希值进行 symbolize_keys

ruby-on-rails - Ruby - 实现自定义排序

oracle - 如何在oracle存储过程中获取游标数据

sql - Oracle:使用正则表达式从查询中排除结果