我收到有关强参数的错误消息。我认为只是rails 4不再使用属性了。我的toy.rb的代码是:
class Toy < ActiveRecord::Base
attr_accessible :name, :price, :vendor
validates :name, :presence => true
validates :price, :presence => true
validates :price, :numericality => true
validates :vendor, :presence => true
end
如何将其更改为强参数?
编辑:我使用了不同的rb我将其更改为员工,这就是我所拥有的:
class Employee < ActiveRecord::Base
params.require(:employee).permit(:first, :last, :salary, :salary, :ssn)
validates :first, :presence => true
validates :last, :presence => true
validates :salary, :presence => true
validates :salary, :numericality => true
validates :ssn, :presence => true
端
它还在告诉我“ndefined局部变量或方法`params'代表#”
答案 0 :(得分:2)
您需要的代码是
params.require(:toy).permit(:name, :price, :vendor)
您将把它放在控制器中。通常,您创建一个私有方法:
def create
Toy.create(toy_params)
end
private
def toy_params
params.require(:toy).permit(:name, :price, :vendor)
end
有关详细信息,请参阅http://guides.rubyonrails.org/getting_started.html#saving-data-in-the-controller。
修改强> 我想我可能用我原来的答案误导了你。代码在控制器中,而不是模型。
答案 1 :(得分:0)
强力参数旨在帮助您的控制器将特定数据发送到您的模型。它旨在保护您的应用程序免受未经授权的数据传递:
#app/controllers/toys_controller.rb
Class ToysController < ActiveRecord::Base
def new
@toy = Toy.new #-> creates a blank AR object
end
def create
@toy = Toy.new(toys_params) #->creates new AR object (populating with strong params)
@toy.save
end
private
def toys_params
params.require(:toys).permit(:your, :params, :here)
end
end