I’m trying to use an array column to crete an association between 2 models. I remember that in the past this was working, but I think something has changed and now it’s not working anymore. Here is the deal:
Ruby 2.4.3p205 (2017-12-14 revision 61247) [x86_64-linux]
Rails 5.1.5
app/models/user.rb
Having the columns id, name, email
class User < ApplicationRecord end
``
app/models/group.rb
Having the columns id, name, user_ids
class Group < ApplicationRecord has_many :users, primary_key: :user_ids, foreign_key: :id end
``
And the oddest thing about this is that the following works fine: Group.first.users
``
It gives me the list of the users with the ids filled on that field, but the following doesn’t work:
Group.first.users.load
``
It gives me an empty list. And, since the load method doesn’t work, I cannot do any operation like #each or #to_a.
I already did some dig up, and found the source of the problem here: https://github.com/rails/rails/blob/v5.1.5/activerecord/lib/active_record/associations/association_scope.rb#L79
The first command don’t replace the original value by a Replaceable, the second does. Maybe we just need a ReplaceableArray or something like that, or I’m missing something here.
Can anyone help me with that?