我有以下结构:
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语句中?
答案 0 :(得分:0)
您可以尝试使用“productID”代替:productID吗?
看起来这个问题与rails中的自动降级功能有关。