【发布时间】:2011-11-28 02:31:28
【问题描述】:
我有一些使用 STI 建模的继承。它有一个基类,就像这样:
class Tariff < ActiveRecord:Base
end
然后它有几个孩子:
def FlatRateTariff < Tariff
end
其中一个类有一个 has_many 关联:
def TimeOfUseTariff < Tariff
has_many :tariff_periods, :dependent => :destroy
end
这是我在关联中指定的 TariffingPeriod 类:
class TariffingPeriod < ActiveRecord::Base
belongs_to :time_of_use_tariff, :foreign_key => :tariff_id
# i've also tried :belongs_to :tariff, :foreign_key => :tariff_id
alias_attribute :time_of_use_tariff_id, :tariff_id # i've tried that just in case....
end
当我在我的控制器或视图中调用@tariff.tariffing_periods ActiveRecord 时会吐出如下内容:
SELECT * FROM `tariffing_periods` WHERE (`tariffing_periods`.time_of_use_tariff_id = 13)
如您所见,我的外键 (time_of_use_tariff_id) 不正确。有没有办法以某种方式覆盖这个外键或强制 ActiveRecord 生成正确的 SQL?我在 TariffingPeriod 中尝试过 :foreign_key 覆盖,但这无济于事......有什么想法吗?
【问题讨论】:
-
您是否尝试将外键添加到 TimeOfUseTarrif has_many 关系?
-
确实成功了!!不知道我可以将foreign_key覆盖放在“has_many”端......以为它只能放在belongs_to端,但它有效。您可以将其作为答案,以便我将其标记为已解决吗?
-
是的,那个人过去曾绊倒我。很高兴它对你有用。
-
这里也一样...这似乎违反直觉,不是吗?
标签: ruby-on-rails ruby activerecord