您好我是rails的初学者,并设置了具有各种关联的数据库/模型。
我希望我的transactions
控制器将transactions
记录和相应的subtransactions
记录(即事务中每个子事务(例如产品)的一行)保存到数据库中。
创建新表subtransactions
(与transactions
相关联)后,我遇到以下异常:
ArgumentError
You tried to define an association named transaction on the model Subtransaction,
but this will conflict with a method transaction already defined
by Active Record. Please choose a different association name.
我对这告诉我的内容有点困惑,或者更具体地说是在哪里寻找错误。不知道如何找出我的关联与之相冲突的方法。
答案 0 :(得分:3)
正如错误消息所示,问题在于您的事务关联:在活动记录对象上已有一个名为transaction
的实例方法。
创建名为transaction
的关联也会创建一个同名的读取器方法,该方法将隐藏预先存在的方法。在过去,当某些内部的rails试图调用一个方法并最终调用你的关联阅读器方法时,这会导致真正模糊的错误,因此rails会阻止你这样做。
此外,您无法创建名为transaction
的新方法,因为ActiveRecord::Base.transaction
是一种保留方法。
http://api.rubyonrails.org/classes/ActiveRecord/Transactions/ClassMethods.html
答案 1 :(得分:0)
您的问题是因为product_orders表的模型名称错误
默认名称应为
ProductOrder