Ruby on rails 4 在创建时将项目添加到多个关系中

Ruby on rails 4 在创建时将项目添加到多个关系中,ruby-on-rails-4,Ruby On Rails 4,我试图使一个有许多关系的工作对象被创建 这是一个简单的案例,尽管通过网络进行了许多努力和研究,但我无法找到我的代码不起作用的原因 我有以下几类注意:有些变量使用法语名称: 分类和交易是基本模型,分类是专门用于关联的。这是一个基本的帐户-交易系统 我可以做的是创建一个事务和一个类别,然后填充事务。类别事务具有一个id。 我不能做的是: 非常感谢你的帮助 编辑:这是在rails 4.0.0中完成的 我发现问题来自Comptes::Categorization中的验证。 如果事务或类别尚不存在,则这将

我试图使一个有许多关系的工作对象被创建

这是一个简单的案例,尽管通过网络进行了许多努力和研究,但我无法找到我的代码不起作用的原因

我有以下几类注意:有些变量使用法语名称:

分类和交易是基本模型,分类是专门用于关联的。这是一个基本的帐户-交易系统

我可以做的是创建一个事务和一个类别,然后填充事务。类别事务具有一个id。 我不能做的是:

非常感谢你的帮助

编辑:这是在rails 4.0.0中完成的 我发现问题来自Comptes::Categorization中的验证。 如果事务或类别尚不存在,则这将阻止创建新的分类

2014年8月18日更新:问题来自分类中的验证,这会阻止在没有现有事务和类别的情况下创建关联。这可能是rails 4.0.0中的一个问题。要查看…

交易类不在Comptes模块下。因此,当您确实有_-many:Categorization或其中有_-many:categories时,相应的模型将被推断为Categorization和Category,而不是Comptes::Categorization和Comptes::Category

要解决此问题,需要指定关联的class_name选项,因为无法从关联名称推断模型名称

更新类事务,如下所示:

class Transaction < ActiveRecord::Base
  has_many :categorizations, class_name: "Comptes::Categorization" , dependent: :destroy
  accepts_nested_attributes_for :categorizations
  has_many :categories, through: :categorizations, class_name: "Comptes::Category"
end

实际上,这只是一个复制错误。事务也属于模块Comptes。我会更新我的问题。
transaction = Comptes::Transaction.new ...
category = Comptes::Category.first
transaction.categories << category
# OR
transaction.categorizations.build category: category
# OR
# use categorizations_attributes in and accepts_nested_attributes_for.
class Transaction < ActiveRecord::Base
  has_many :categorizations, class_name: "Comptes::Categorization" , dependent: :destroy
  accepts_nested_attributes_for :categorizations
  has_many :categories, through: :categorizations, class_name: "Comptes::Category"
end