ActiveModel :: MissingAttributeError:无法写入未知属性

时间:2013-06-27 14:21:35

标签: ruby-on-rails ruby rails-activerecord

尝试通过belongs_to关联两条记录时遇到问题:

class Enrollment < ActiveRecord::Base
  belongs_to :offering,
    foreign_key: [:term_id, :class_number]
end

@enrollment = Enrollment.new
@enrollment.offering = Offering.last

这引发:

ActiveModel::MissingAttributeError: can't write unknown attribute `[:term_id, :class_number]'

我做错了什么?

1 个答案:

答案 0 :(得分:0)

遗憾的是,Rails不支持复合键。如果你需要这样的东西,你最好选择一个习惯:has_many喜欢@ yannick的评论引用。

另一方面,你可以使用一个由视图支持的模型,使用一个具有rails友好ID的表(比如my_offerings)和另一个表中的两个PK列( term_idclass_number)并将其与代码中的其他表连接。

然后,有一个小进程解析offerings表,并构建任何丢失的my_offering记录。

最后视图将有一个ID,视图中的连接(对于rails来说是透明的)将处理复合键。