2012-10-20 50 views
1

ID当我想用建立一个多到多通过关联,我得到在我的控制器以下错误:钢轨3.1 - 未知属性:上构建

未知属性:fte_report_option_id

在我的控制器:

DEF edit_clients_reports
@fte_report_option = FteReportOption.find(PARAMS [:ID])
@ fte_report_option.fte_report_client_options.build

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

类FteReportOption <的ActiveRecord :: Base的

的has_many:fte_report_client_options,:依赖=> :destroy
has_many:clients,:through =>:fte_report_client_options
end

以我第二模型:

类FteReportClientOption <的ActiveRecord ::基地
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 =>“Client”
end

而且我的第三个模型:

类客户端<的ActiveRecord :: Base的
set_primary_key “CLIENT_ID”

的has_many:fte_report_client_options,:依赖=>:摧毁
的has_many:fte_report_options,:通过=>: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

有没有人知道发生了什么情况?

感谢您的帮助

+0

也许我们应该通过审查,您已经发布的代码开始。 在'FteReportClientOption'中我们有'self.primary_key =“client_report_id”'这没有任何意义。你的意思是'set_primary_key'? 然后,在迁移中,将主键设置为表中不存在的列。 这些问题可能会影响Rails如何尝试“猜测”您的属性名称。 总而言之 - 如果你没有真正强有力的理由,我会强烈要求你使用Rails标准的主键。 – Jesper

回答

0

在您的迁移,变更线:

t.integer :option_id 

到:

t.integer :fte_report_option_id 
+0

@Adam Eberlin。非常感谢亚当。我现在要调试我的控制器调用我的视图。但我最初的问题是解决。 – Marc