0

I'm running into an issue when trying to associate two records via a belongs_to:

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

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

This throws:

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

What am I doing wrong?

4

1 回答 1

0

不幸的是,Rails 不支持复合键。如果你需要这样的东西,你最好使用自定义 :has_many 就像@yannick 的评论引用一样。

另一方面,您可以使用由视图支持的模型来执行此操作,使用my_offerings具有 Rails 友好 ID 的表(例如 )和另一个表中的两个 PK 列(term_id, class_number)并将其与另一个代码中的表格。

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

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

于 2013-06-27T14:38:14.890 回答