Ruby on rails 3 当使用has_many和自定义外键时,在Rails 3中出现了一个未定义的方法错误

Ruby on rails 3 当使用has_many和自定义外键时,在Rails 3中出现了一个未定义的方法错误,ruby-on-rails-3,activerecord,has-many,Ruby On Rails 3,Activerecord,Has Many,第一种模式: class FaqGroup < ActiveRecord::Base has_many :faqs, :foreign_key => 'group_id', :order => 'position' acts_as_list end 结束 当我在浏览器中加载时,会出现以下错误: undefined method `faq_group_id' for #<Faq:0xb56fcde4> 它工作正常,因此似乎只有在创建新的关联对象时才使用外

第一种模式:

class FaqGroup < ActiveRecord::Base
  has_many :faqs, :foreign_key => 'group_id', :order => 'position'

  acts_as_list
end
结束

当我在浏览器中加载时,会出现以下错误:

undefined method `faq_group_id' for #<Faq:0xb56fcde4>
它工作正常,因此似乎只有在创建新的关联对象时才使用外键时出现问题

谢谢大家!

检查该选项

如前所述,

对于
中的
外键
属于
-

指定用于关联的外键。默认情况下,这被猜测为带有“\u id”后缀的关联的名称。因此,定义归属于:person关联的类将使用“person\u id”作为默认的:外键。类似地,归属于:favorite\u person,:class\u name=>“person”将使用“最喜欢的人的id”

因此,在上下文中,错误是因为您定义了:

class Faq < ActiveRecord::Base
  belongs_to :faq_group, :foreign_key => 'group_id'
检查一下

如前所述,

对于
中的
外键
属于
-

指定用于关联的外键。默认情况下,这被猜测为带有“\u id”后缀的关联的名称。因此,定义归属于:person关联的类将使用“person\u id”作为默认的:外键。类似地,归属于:favorite\u person,:class\u name=>“person”将使用“最喜欢的人的id”

因此,在上下文中,错误是因为您定义了:

class Faq < ActiveRecord::Base
  belongs_to :faq_group, :foreign_key => 'group_id'

据我所知:foreign\u key参数用于指定不同于默认外键的外键。这就是我正在做的。如果我想坚持使用默认外键(faq\u group\u id),则根本不需要更改:foreign_key参数。这不是正确的关联,因为您说
faq属于faq_组
,但您将外键关联为组的id。当组与faq从不相关时,外键怎么可能是
group_id
在两个表之间,即
常见问题解答
。如前所述,外键应在其
所属的
\u id
的末尾添加后缀。据我所知,如果要指定不同于默认外键的外键,则使用:foreign\u key参数。这就是我正在做的愿意坚持默认设置(faq\u组\u id),则根本不需要更改:foreign_key参数。这不是正确的关联,因为您说
faq属于faq_组
,但您将外键关联为组的id。当组与faq从不相关时,外键怎么可能是
group_id
在两个表之间,即
常见问题解答
。如前所述,外键应在其
所属的
\u id
末尾加上后缀。
@group = FaqGroup.find(params[:id])
@faqs = @group.faqs
class Faq < ActiveRecord::Base
  belongs_to :faq_group, :foreign_key => 'group_id'
undefined method `faq_group_id' for #<Faq:0xb56fcde4>