【发布时间】:2014-08-05 18:46:54
【问题描述】:
我是学习 Rails 的新手,但我目前对 attr_accessible 的理解是它使类的属性在类范围之外可用。
但是,如果不创建属性 attr_accessible,我可以在 Rails 控制台的辅助方法参数中访问该属性。
'005 > Todo.create(:todo_item => "Pay internet bill")
(0.1ms) begin transaction
SQL (0.6ms) INSERT INTO "todos" ("created_at", "todo_item", "updated_at") VALUES (?, ?, ?) [["created_at", Sat, 18 Aug 2012 09:55:33 UTC +00:00], ["todo_item", "Pay internet bill"], ["updated_at", Sat, 18 Aug 2012 09:55:33 UTC +00:00]]
(339.1ms) commit transaction
=> #<Todo id: 6, todo_item: "Pay internet bill", created_at: "2012-08-18 09:55
但是在控制器动作中做同样的事情:
def add
Todo.create(:todo_item => params[:todo_text])
redirect_to :action => 'index'
end
在我需要指定的模型中
attr_accessible :todo_item
为什么这个属性可以在 Rails 控制台中访问,但不能在控制器方法中访问?
【问题讨论】:
-
记住Rails4使用强参数:edgeapi.rubyonrails.org/classes/ActionController/…
-
我目前正在编写一个使用 rails 3.2 的教程,在 rails 4 中改变了 attr_accessible 的使用方式?
-
是的,没有更多的 attr_accessible 但强大的参数,请阅读:easyactiverecord.com/blog/2014/04/01/…
-
谢谢!那么在 Rails 4 中,add 操作中的 create 方法是否会默认工作而无需在模型类中指定 attr_accessible?
标签: ruby-on-rails ruby scope attr-accessible