【发布时间】:2020-07-19 22:06:54
【问题描述】:
我有 users1 和 users2,我想做的是将它们结合起来,并在没有用户重复的情况下获得用户的 uniq 结果。但是我无法这样做,因为我收到 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
facility.rb
has_and_belongs_to_many :users
facilities_user.rb
belongs_to :user
belongs_to :facility
schema.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
【问题讨论】:
-
"我收到 NilClass 错误。' -- 错误是什么?请edit your post 包含它。错误应该显示哪一行代码包含问题。如果我们自己没有看到这一点,这会使问题变得不必要地神秘。
-
@TomLord 对此感到抱歉。我在问题中添加了错误消息
-
这是一个巨大的X&Y problem。当您真正应该首先询问我们如何不从数据库中获取重复项以及如何在不执行诸如 6 个数据库查询之类的操作的情况下执行相对简单的工作时,您正在询问如何在 Ruby 中删除重复项。
-
如果您编辑问题以显示您的模型、数据和预期结果,我们可以向您展示如何实际创建有效解决问题的查询或关联。
-
你今天不是问了一个非常相似的问题吗,我解释说 HABTM 不使用连接模型?也许您应该从阅读我的答案中链接的关联指南和查询界面开始。这里的答案就像那个问题
has_many through:
标签: ruby-on-rails ruby postgresql ruby-on-rails-5