Ruby on rails 为什么我仍然可以在rails控制台中使用access属性而不使用attr_access?

Ruby on rails 为什么我仍然可以在rails控制台中使用access属性而不使用attr_access?,ruby-on-rails,ruby,scope,attr-accessible,Ruby On Rails,Ruby,Scope,Attr Accessible,我对学习Rails还不熟悉,但我目前对attr\u accessible的理解是,它使类的属性在类范围之外可用 但是,如果不使属性attr_可访问,我就可以在Rails控制台的helper方法参数中访问该属性 '005 > Todo.create(:todo_item => "Pay internet bill") (0.1ms) begin transaction SQL (0.6ms) INSERT INTO "todos" ("created_at", "to

我对学习Rails还不熟悉,但我目前对
attr\u accessible
的理解是,它使类的属性在类范围之外可用

但是,如果不使属性
attr_可访问
,我就可以在Rails控制台的helper方法参数中访问该属性

'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
在模型中,我需要指定

 attr_accessible :todo_item

为什么此属性可以在Rails控制台中访问,但不能在控制器方法中访问?

ActiveRecord会根据数据库架构自动创建属性。这是一个表面上类似于但独立于作为核心Ruby一部分的
attr\u访问器
系统的系统

在内部,他们没有任何共同之处。一个
attr\u访问器
只是一个简单实例变量的包装器,但在模型实例中还有很多事情要做


对于需要临时存储但不在数据库中的内容,可以向模型添加可访问属性。但是,这是一件相当少见的事情。

这是否意味着我可以使用等效符号访问Rails中attirbutes的实例变量,而不必指定attr\u accessor,因为Rails会自动创建属性?是的,如果它是与数据库中的列相对应的属性,则可以使用hash
todo1[:name]
或dot
todo1.name
todo1.read\u属性(:name)从模型中直接访问它
记住Rails4使用强参数:我目前正在学习一个使用rails 3.2的教程,rails 4中使用attr_accessible的方式是否发生了变化?是的,不再使用attr_accessible,而是使用强参数,请阅读以下内容:谢谢!那么在Rails 4中,add action中的create方法在默认情况下是否可以工作,而不必在模型类中指定attr_accessible?
 attr_accessible :todo_item