AMI*_*ING 5 ruby ruby-on-rails-3.2
在rails 2.3.11,我在模型下面
attr_accessor :person_id
Run Code Online (Sandbox Code Playgroud)
并在控制器中
@project.person_id = current_user.id
Run Code Online (Sandbox Code Playgroud)
现在,我正在改变它rails 3.2.11,我正在接受
Can't mass-assign protected attributes: person_id
Run Code Online (Sandbox Code Playgroud)
所以我在模型改变了,我删除:person_id从attr_accessor,并添加下面一行
attr_accessible :person_id
Run Code Online (Sandbox Code Playgroud)
但我是控制器中的person_id,在这里
@project.person_id = current_user.id
Run Code Online (Sandbox Code Playgroud)
我现在得到这个
NoMethodError in ProjectsController#create
undefined method `person_id=' for #<Project:0x19cc51a>
Run Code Online (Sandbox Code Playgroud)
任何想法或帮助,我该如何解决这个问题?如何处理attr_accessor和attr_accessible?
attr_accessor :person_id并且attr_accessible :person_id不一样.
attr_accessor是Ruby方法.简而言之,它是方法的捷径:
def person_id
@person_id
end
def person_id=(value)
@person_id = value
end
Run Code Online (Sandbox Code Playgroud)
attr_accessible是Rails方法.获取允许批量分配的属性列表.你可以在这里阅读.
因此,在您的情况下,您需要它们.
attr_accessor :person_id
attr_accessible :person_id
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1791 次 |
| 最近记录: |