代码之家  ›  专栏  ›  技术社区  ›  Harsha M V

Rails将关系数据库ID映射到数组中

  •  0
  • Harsha M V  · 技术社区  · 10 年前

    我有以下型号

    venues(id, name, ....)
    categories(id, name, ....)
    categories_venues(id, venue_id, category_id)
    

    我想创建一个与某个场地相关联的类别数组。这种关系属于HABTM类型。

    我尝试了什么?

    @venue = Venue.friendly.find(params[:id])
    categories = @venue.categories.map { |x| x.id }
    
    3 回复  |  直到 10 年前
        1
  •  2
  •   Igor Guzak    10 年前

    您可以使用:

    @venue.category_ids
        2
  •  1
  •   Ivan Shamatov    10 年前

    试试看: @venue.categories.pluck(:id) .

    这将创建 SELECT 仅查询 id 领域

        3
  •  1
  •   Milind    10 年前
    i guess `has_many through` will help you out.for example:-
    

      #####in user.rb
    
        ##association for getting all users and thier groups /vice-versa
         has_many :user_groups, :dependent => :destroy
         has_many :groups, :through => :user_groups
     ---------------------------------------------------   
         ####in group.rb
    
         has_many :user_groups, :dependent => :destroy
         has_many :users, :through => :user_groups
    -----------------------------------------------------------     
        #####in user_group.rb
    
         belongs_to :group
         belongs_to :user
    -------------------------------------------------------------    
        ###and we have the necessary migration(its easy... :))..
        so now
    
    
        @user=User.find(1)
        all_groups_for_user=@user.groups.where("name=?","Alumni")
        all_names_of_groups_for_user=@user.groups.map(&:name)
    

    如果您使用 scopes/class methods 比您可以使用 joins/include