Elegantly selecting attributes from has_many :through join models in Rails

前端 未结 4 631
春和景丽
春和景丽 2021-02-06 14:51

I\'m wondering what the easiest/most elegant way of selecting attributes from join models in has_many :through associations is.

Lets say we have Items, Catalogs, and Cat

4条回答
  •  被撕碎了的回忆
    2021-02-06 15:03

    You can do something like this:

    # which is basically same as your "frustrating way" of doing it
    @item.catalog_items.find_by_catalogue_id(@item.catalogs.first.id).position
    

    Or you can wrap it into in an instance method of the Item model:

    def position_in_first_catalogue
      self.catalog_items.find_by_catalogue_id(self.catalogs.first.id).position
    end
    

    and then just call it like this:

    @item.position_in_first_catalogue
    

提交回复
热议问题