5

rails 2.3.11,我有以下模型

attr_accessor :person_id

并在控制器中

@project.person_id = current_user.id

现在,我正在转换它,rails 3.2.11我得到了

Can't mass-assign protected attributes: person_id

所以我改变了模型,我:person_idattr_accessor下面的行中删除并添加

attr_accessible :person_id

但我在控制器中使用 person_id,这里是

@project.person_id = current_user.id

我现在得到这个

NoMethodError in ProjectsController#create

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

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

4

1 回答 1

5

attr_accessor :person_id并且attr_accessible :person_id不一样。

attr_accessorRuby方法。简而言之,它的方法快捷方式:

def person_id
  @person_id
end

def person_id=(value)
  @person_id = value
end

attr_accessibleRails方法。获取允许批量分配的属性列表。你可以在这里阅读。

因此,在您的情况下,您需要两者。

attr_accessor :person_id
attr_accessible :person_id
于 2013-05-08T18:17:09.603 回答