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的主要内容,如果未能解决你的问题,请参考以下文章

通过 CSV 导入 Rails 时的多条记录

Rails:红宝石在导轨上的未知属性错误

在 Rails 上导入 CSV 期间的未知属性“headers ...”

AWS Codebuild“名为 '3.1' 的 dotnet 的未知运行时版本。此构建映像具有以下版本:2.2”

安装“nio4r”时的rails 5.0.0:无法构建gem本机扩展

有人可以找到“未知属性”我的语法/逻辑错误是一个多对多的种子创建方法时,在Rails的连接表?