rails 2.3.11中,我在模型中有以下内容

attr_accessor :person_id

并在 Controller 中
@project.person_id = current_user.id

现在,我将其转换为rails 3.2.11并得到
Can't mass-assign protected attributes: person_id

所以我改变了模型,我从:person_id中删除了attr_accessor并添加到下面的行中
attr_accessible :person_id

但我在 Controller 中使用person_id,这是
@project.person_id = current_user.id

我现在得到这个
NoMethodError in ProjectsController#create

undefined method `person_id=' for #<Project:0x19cc51a>

任何想法或帮助,我该如何解决?如何同时处理attr_accessor和attr_accessible?

最佳答案

attr_accessor :person_idattr_accessible :person_id不相同。

attr_accessor Ruby 方法。简而言之,它是方法的快捷方式:

def person_id
  @person_id
end

def person_id=(value)
  @person_id = value
end

attr_accessible Rails的方法。哪个获取允许批量分配的属性列表。您可以阅读有关here的信息。

因此,在您的情况下,您需要两者。
attr_accessor :person_id
attr_accessible :person_id

关于ruby - 无法批量分配 protected 属性attr_accessor和attr_accessible,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16429582/

10-14 07:52