Ruby on rails 轨道属性可访问
我对rails非常陌生,但对web开发不太熟悉。我目前正在通过teamtreehouse构建一个简单的Rails应用程序,他们使用的是Rails 3,而我使用的是Rails 4 在允许用户发布状态的status.rb中,我有以下类:Ruby on rails 轨道属性可访问,ruby-on-rails,ruby-on-rails-3,ruby-on-rails-4,Ruby On Rails,Ruby On Rails 3,Ruby On Rails 4,我对rails非常陌生,但对web开发不太熟悉。我目前正在通过teamtreehouse构建一个简单的Rails应用程序,他们使用的是Rails 3,而我使用的是Rails 4 在允许用户发布状态的status.rb中,我有以下类: class Status < ActiveRecord::Base attr_accessible :content, :user_id belongs_to :user end 类状态
class Status < ActiveRecord::Base
attr_accessible :content, :user_id
belongs_to :user
end
类状态
我很感激attr_accessible已经从rails 4中删除,现在使用params,但是我进行的任何读取都需要更改类名。有没有人对我如何才能做到这一点有什么想法
谢谢您将这一行从模型中删除
attr_accessible :content, :user_id
然后,在控制器中添加一个方法,以白名单可以指定质量的参数
def status_params
params.require(:status).permit(:content, :user_id)
end
你用它来创建一个新的状态
def create
Status.create(status_params)
end
文档中的更多内容如您在rails 4中所说,attr\u accessible被删除,我们使用强参数。要使上述代码在rails 4中工作,您需要在status_控制器中创建一个私有方法status_params,然后在创建状态或更新状态时,您可以在params中传递该方法,如下所示:
class PeopleController < ActionController::Base
def create
@status = Status.new(status_params)
@status.save
end
private
def status_params
params.require(:status).permit(:content, :user_id)
end
end
class PeopleController
我们在这里没有更改任何类,rails 4只是将属性可访问逻辑从模型移动到控制器。有关详细信息,请阅读另一个选项是将gem“protected_attributes”添加到项目gemfile和bundle安装中protected_attributes'gem使您能够在rails 4应用程序中使用attr_accessible和attr_protected(如rails 3应用程序中) 但是,我建议您将重点放在学习如何正确使用strong_params上,因为这很重要,而且非常简单。请参阅RubyonRails指南,了解强参数和控制器的详细说明
另外,我建议您查找并使用Rails4上的更新教程,因为它们并不短缺。Rails 3和Rails 4之间有很多不同之处,其中一些在表面上并不明显,特别是对初学者来说。在学习方面,我们要做的是学习如何使用一个版本的框架构建rails应用程序,以及如何使用针对该版本rails的资源/教程等。作为初学者,没有充分的理由不必要地增加复杂性,需要考虑Rails 3和Rails 4的复杂性和差异。什么是“更改类名”?例如,如果该类最初是person,他们将该类重命名为PeoplePerams。我很抱歉,如果这不是很好的回应,但这是我所知道的所有类没有重命名为PeopleParams,你有点误解。看这里,您向控制器添加了一个方法