Utilisation de Ruby 1.9.3 et ActiveRecord 3.2.6.La comparaison de deux instantanés du même objet activeecord renvoie false si attr_accessible est présent. Ruby
Je rencontre un problème lorsque j'essaie de comparer un objet ActiveRecord qui a attr_accessible: une propriété qui est définie dans un tableau d'objets associés en utilisant include (objet).
Voici mes 2 modèles ActiveRecord, compte et rôle.
compte:
class Account < ActiveRecord::Base
# Associations
#
has_many :role_assignments, :dependent => :destroy
has_many :roles, :through => :role_assignments
end
Rôle:
class Role < ActiveRecord::Base
attr_accessible :title
# Associations
#
has_many :role_assignments, :dependent => :destroy
has_many :accounts, :through => :role_assignments
end
Si je puis créer deux rôles (dire "Admin" et "éditeur") et attribuer le "Admin" un à un compte , Je suppose que cela fonctionnerait:
role = Role.find_by_title("Admin")
account = Account.first # => The Account we assigned the "Admin" role to
account.roles.include?(role) # => Should be true but returns false
Mais cela retourne réellement faux!
Si je supprime le 'attr_accessible: title' du modèle de rôle et répète ce qui précède, il renvoie true.
Donc je suppose que ma question est ... pourquoi attr_accessible provoquerait ce problème particulier? ou est-ce un cas que je dois faire mon chèque pour voir si le rôle existe dans le compte.roles d'une manière différente?
Comment avez-vous créé vos rôles? –