【问题标题】:RAILS 3.1 - unknown attribute: id on buildRAILS 3.1 - 未知属性:构建时的 id
【发布时间】:2012-10-11 04:48:51
【问题描述】:

当我想将构建用于多对多关联时,我的控制器中出现以下错误:

未知属性:fte_report_option_id

在我的控制器中:

定义编辑客户端报告
@fte_report_option = FteReportOption.find(params[:id])
@fte_report_option.fte_report_client_options.build
结束

在我的第一个模型中,我有:

类 FteReportOption

has_many :fte_report_client_options, :dependent => :destroy
has_many :clients, :through => :fte_report_client_options
结束

在我的第二个模型中:

类 FteReportClientOption self.primary_key = "client_report_id"

belongs_to :fte_report_option, :foreign_key => :option_id, :class_name => "FteReportOption" belongs_to :client, :foreign_key => :client_id, :class_name => "客户"
结束

还有我的第三个模型:

类客户端<:base> set_primary_key "client_id"

has_many :fte_report_client_options, :dependent => :destroy
has_many :fte_report_options, :through => :fte_report_client_options

在我的联接表迁移中,我有:

create_table :fte_report_client_options, :primary_key => "client_report_id", :force => true do |t|
t.integer :option_id
t.integer :client_id
t.timestamps
结束

有人知道发生了什么吗?

感谢您的帮助

【问题讨论】:

  • 也许我们应该从查看您发布的代码开始。在FteReportClientOption 我们有self.primary_key = "client_report_id" 这没有任何意义。你的意思是set_primary_key?然后,在迁移中,您将主键设置为表中不存在的列。像这样的问题会影响 Rails 尝试“猜测”属性名称的方式。总而言之 - 我强烈建议你使用 Rails 标准的主键,如果你没有充分的理由不这样做。

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.1


【解决方案1】:

在您的迁移中,更改行:

t.integer :option_id

到:

t.integer :fte_report_option_id

【讨论】:

  • @Adam Eberlin。非常感谢亚当。我现在要调试我的控制器调用的视图。但我原来的问题是解决了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-04
  • 1970-01-01
  • 2012-02-16
  • 1970-01-01
相关资源
最近更新 更多