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

时间:2014-08-25 08:45:52

标签: ruby-on-rails mapreduce

我有以下型号

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 个答案:

答案 0 :(得分:2)

你可以使用:

@venue.category_ids

答案 1 :(得分:1)

试试这个:@venue.categories.pluck(:id)

这将仅为SELECT字段

创建id查询

答案 2 :(得分:1)

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

获取更多数据