我想为特定用户获取“offer”类型的所有TaskInteractions。
我有一个用户模型
has_many :task_interactions
和TaskInteraction模型
belongs_to :user
TaskInteraction有一个属性“type”,它可以有值offer或quiz。
目前,我正在使用范围
scope :offer_interactions, -> { where(type: 'offer') }
我得到了结果
@user.task_interactions.offer_interactions
或者在用户模型中我可以定义:
def offer_interactions
self.task_interactions.where(type: 'offer')
end
或者如果我结合范围和offer_interactions方法:
def offer_interactions
self.task_interactions.offer_interactions
end
问题:
有没有更好的方法来获得这个结果?
是否有Rails方式解决这个问题?
答案 0 :(得分:2)
您还可以在用户模型中添加范围has_many
关系,只考虑商品task_interactions:
has_many :offer_interactions, -> { where(type: 'offer') }, class_name: 'TaskInteraction'
然后只需致电@user.offer_interactions