RAILS 3.1 - 未知属性:构建时的 id
Posted
技术标签:
【中文标题】RAILS 3.1 - 未知属性:构建时的 id【英文标题】:RAILS 3.1 - unknown attribute: id on build 【发布时间】: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 标准的主键,如果你没有充分的理由不这样做。
【参考方案1】:
在您的迁移中,更改行:
t.integer :option_id
到:
t.integer :fte_report_option_id
【讨论】:
@Adam Eberlin。非常感谢亚当。我现在要调试我的控制器调用的视图。但我原来的问题是解决了。以上是关于RAILS 3.1 - 未知属性:构建时的 id的主要内容,如果未能解决你的问题,请参考以下文章
在 Rails 上导入 CSV 期间的未知属性“headers ...”
AWS Codebuild“名为 '3.1' 的 dotnet 的未知运行时版本。此构建映像具有以下版本:2.2”