我有一个User
模型,可以从他们创建的CardSignup
模型中获取礼券。
但是,我还想从一个名为GiftConversion
我的模型设置如下:
User.rb
has_many :conversions, :foreign_key => :converted_by, :class_name => "CardSignup"
has_many :conversions, :foreign_key => :converted_by, :class_name => "GiftConversion"
CardSignup.rb
belongs_to :converted_by, :class_name => "User"
GiftConversion
belongs_to :converted_by, :class_name => "User"
通过这种方式,我想要做的是输入User.find(x).conversions
,只要他们的foreign_key CardSignup
,它就会返回GiftConversion
模型和:converted_by
模型与该用户模型相关联。
不幸的是,这不能正常工作。相反,编译器只是抓住后面的语句。在这种情况下,GiftConversion
,只允许将其识别为User.find(x).conversions
。
有谁知道如何让User
模型以相同的名义共享两个模型?
答案 0 :(得分:0)
您可能有一个自定义关联,它使用UNION
或类似的东西将两个表连接到自定义SQL语句,但我不推荐它,因为您有两个代表非常相似的模型但是不完全相同 - 单表继承的一个很好的用例。
我这样做的方法是为CardSignup
和GiftConversion
提供一个表,并使用单表继承来连接这两个模型,因此公用表将包含{{1 }}列,指定它是type
还是CardSignup
。
有关详细信息,请参阅“单表继承”下的内容: