首页 > 解决方案 > 提取 uniq 结果为 ruby

问题描述

我有users1和users2,我想做的是将它们结合起来,并在没有用户重复的情况下获得用户的唯一结果。但是我无法这样做,因为我收到 NoMethodError (undefined method `+' for nil:NilClass): error。我怎样才能解决这个问题。请帮我解决这个问题。

def wanted_users
  @users1 = License.find(params[:ID]).users
  driving_facilities = License.find(params[:ID]).facilities.ids
  user_ids = FacilitiesUser.where(facility_id:  driving_facilities).pluck(:user_id)
  @users2 = User.where(id: [user_ids])
  @users = @users1 + @users2
  @users.uniq
end

用户.rb

has_many :facilities_users, dependent: :destroy
has_and_belongs_to_many :facilities, join_table: :facilities_users

设施.rb

has_and_belongs_to_many :users

设施_用户.rb

belongs_to :user
belongs_to :facility

架构.rb

create_table "facilities_users", force: :cascade do |t|
    t.bigint "user_id", null: false
    t.bigint "facility_id", null: false
    t.index ["facility_id"]
    t.index ["user_id", "facility_id"], unique: true
end

标签: ruby-on-railsrubypostgresqlruby-on-rails-5

解决方案


您应该避免使用array = arrayA + arrayB,因为它会像您上面的问题一样引发错误。

使用运算符push<<代替+


推荐阅读