0

使用 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 中是否存在角色?

4

1 回答 1

3

你可以试试

account.role_ids.include?(role.id)
于 2012-07-19T11:32:30.553 回答