Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 轨道属性可访问_Ruby On Rails_Ruby On Rails 3_Ruby On Rails 4 - Fatal编程技术网

Ruby on rails 轨道属性可访问

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 类状态

我对rails非常陌生,但对web开发不太熟悉。我目前正在通过teamtreehouse构建一个简单的Rails应用程序,他们使用的是Rails 3,而我使用的是Rails 4

在允许用户发布状态的status.rb中,我有以下类:

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,你有点误解。看这里,您向控制器添加了一个方法