ActiveRecord:has_many和自定义foreign_key

时间:2012-03-10 14:35:44

标签: ruby-on-rails activerecord has-many-through

我有以下结构:

class Product < ActiveRecord::Base
    has_many :product_units
    has_many :units, :through => :product_units, :foreign_key => :unitID
end

class Unit < ActiveRecord::Base
    has_many :product_units
    has_many :products, :through => :product_units, :foreign_key => :productID
end

class ProductUnit < ActiveRecord::Base
    belongs_to :unit, :foreign_key => :unitID
    belongs_to :product, :foreign_key => :productID
end

但是当我尝试运行时

Product.last.units.create({:name => 'test', :symbol => 't'})

发生以下错误:

ActiveRecord::UnknownAttributeError: unknown attribute: product_id

有人能帮助我吗?它让我发疯:x

修改 当我尝试以下内容时:

Product.last.units

我收到错误

SELECT "units".* FROM "units" INNER JOIN "product_units" ON "units"."unitID" = "product_units"."unitID" WHERE "product_units"."product_id" = 1

问题是product_units没有product_id字段,而是其名称是productID;为什么标识符名称在连接时是正确的而不是在where语句中?

1 个答案:

答案 0 :(得分:0)

您可以尝试使用“productID”代替:productID吗?
看起来这个问题与rails中的自动降级功能有关。