ruby-on-rails - 提取 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
解决方案
您应该避免使用array = arrayA + arrayB
,因为它会像您上面的问题一样引发错误。
使用运算符push
或<<
代替+
推荐阅读
- docker - exec形式的Docker RUN命令不起作用
- pandas - Dataframe 的真值是不明确的。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()
- github - Hexo 部署:没有连接到 Github
- javascript - 尝试在 Applescript 中记录此 javascript 变量,但其记录为 (*missing value*)
- javascript - 如果键匹配,则将对象移动到子集
- c++ - 通用引用似乎不起作用,编译器将参数作为 r 值
- docker - 任何可行的方法来使用多个 GPU,多进程和 tensorflow?
- python - numpy eig 与 svd 。为什么他们会产生不同的结果
- mysql - 按以数字开头的字符串排序 - ActiveRecord
- php - 当 data_type 不匹配时,PDO 准备好的语句返回整个表