使用 Ruby 1.9.3 和 ActiveRecord 3.2.6。
我在尝试比较具有 attr_accessible :property 设置的 ActiveRecord 对象时遇到问题,该对象包含在使用 include?(object) 的关联对象数组中。
这些是我的 2 个 ActiveRecord 模型,Account 和 Role。
帐户:
class Account < ActiveRecord::Base
# Associations
#
has_many :role_assignments, :dependent => :destroy
has_many :roles, :through => :role_assignments
end
角色:
class Role < ActiveRecord::Base
attr_accessible :title
# Associations
#
has_many :role_assignments, :dependent => :destroy
has_many :accounts, :through => :role_assignments
end
如果我然后创建几个角色(比如“管理员”和“编辑”)并将“管理员”分配给一个帐户,我会假设这会起作用:
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
但这实际上返回错误!
如果我从角色模型中删除“attr_accessible:title”并重复上述操作,那么它确实返回 true。
所以我想我的问题是......为什么 attr_accessible 会导致这个特定问题?还是我必须以不同的方式检查 account.roles 中是否存在角色?