如何在Rails模型中定义关系,其中模型具有引用另一个表中的静态值的外键

时间:2018-10-31 12:15:14

标签: ruby-on-rails activerecord associations

我有一些用户对象需要引用外部表上的静态值。使用者可以选择时尚和食物。时尚选择和食物选择表只是带有ID的字符串列表。将值存储在单独的文件(CSV,JSON)中不适合我的业务案例。

我定义了一个自定义方法:

def fashion_choice
  FashionChoice.find_by(id: self.fashion_choice_id)
end

哪一个工作正常,但由于我在ActiveRecord查询中无法使用includes,因为该关联是在自定义方法中定义的,因此给了我N + 1的问题。

我知道我可以在用户模型中使用类似belongs_to的方式来告诉rails密钥位于Users表中,但是说User属于一种时尚选择感到很奇怪。有没有更好的方法可以做到这一点,还是我只需要惯用的Rails方法?

用户表:

id name fashion_choice_id food_choice_id

FashionChoice表:

id name
1  Halloween
2  Holiday
3  Beach Santa

FoodChoice表与此类似。

0 个答案:

没有答案