第一个模型:
class FaqGroup < ActiveRecord::Base
has_many :faqs, :foreign_key => 'group_id', :order => 'position'
acts_as_list
end
第二种模式:
class Faq < ActiveRecord::Base
belongs_to :faq_group, :foreign_key => 'group_id'
acts_as_list :scope => :faq_group
end
控制器:
def new_faq
@group = FaqGroup.find(params[:id])
@faq = @group.faqs.create(question: 'lorem', answer: 'ipsum')
端
当我在浏览器中加载它时,我收到以下错误:
undefined method `faq_group_id' for #<Faq:0xb56fcde4>
所以,基本上当我尝试创建一个新的关联对象时,foreign_key就会被忽略。如果我放弃自定义:foreign_key一切都很好。
另一个观察是,如果我这样做:
@group = FaqGroup.find(params[:id])
@faqs = @group.faqs
它工作正常,所以只有在创建新的关联对象时才会使用foreign_key时出现问题。
谢谢!
答案 0 :(得分:1)
检查belongs_to association with the foreign key option。
如上所述,
foreign key
中的belongs_to
-
“指定用于关联的外键。默认情况下,这被认为是带有”_id“后缀的关联的名称。因此定义belongs_to:person关联的类将使用”person_id“作为默认值:foreign_key。同样,belongs_to:favorite_person,:class_name =&gt;“Person”将使用“favorite_person_id”的外键。“
所以在它的上下文中,错误是因为你定义了:
class Faq < ActiveRecord::Base
belongs_to :faq_group, :foreign_key => 'group_id'
此关联需要faq_group_id
作为外键,而不是group_id
。
错误也是如此 -
undefined method `faq_group_id' for #<Faq:0xb56fcde4>