Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/57.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.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 Rails属性仅可用于seed.rb?_Ruby On Rails_Ruby_Attr Accessible - Fatal编程技术网

Ruby on rails Rails属性仅可用于seed.rb?

Ruby on rails Rails属性仅可用于seed.rb?,ruby-on-rails,ruby,attr-accessible,Ruby On Rails,Ruby,Attr Accessible,我通过PragProg自学Rails(显然已经过时了——我使用的是Rails 3.2.3)。我发现了这本书没有提到的seeds.rb文件。我已经尝试为许多事情构建适当的种子条目,它让我无法批量分配受保护的属性 经过一系列搜索,我唯一的选择似乎是通过attr\u accessible打开这些东西,或者关闭阻止批量分配的默认功能。但我想保持任何安全设置意味着。我不希望这些条目在种子设定后被编辑。我只需要先把这些输入数据库 我在这里看不到什么?如何在不关闭保护的情况下为这些数据设定种子?似乎种子应该是

我通过PragProg自学Rails(显然已经过时了——我使用的是Rails 3.2.3)。我发现了这本书没有提到的seeds.rb文件。我已经尝试为许多事情构建适当的种子条目,它让我无法批量分配受保护的属性

经过一系列搜索,我唯一的选择似乎是通过
attr\u accessible
打开这些东西,或者关闭阻止批量分配的默认功能。但我想保持任何安全设置意味着。我不希望这些条目在种子设定后被编辑。我只需要先把这些输入数据库


我在这里看不到什么?如何在不关闭保护的情况下为这些数据设定种子?似乎种子应该是一种特殊情况,允许在其他情况下不允许的情况下进行批量分配。

attr\u accessible
指定一个属性列表,该列表应始终对批量分配开放,因此如果您只想打开这些属性进行种子分配,那么这可能不是您想要的

在种子文件中可以做的一件事是对每个属性使用setter方法。例如:

admin = User.new do |u|
  u.name = "Foo"
  u.admin = true
end

admin.save!

我认为我的部分问题是我不完全理解上述保护措施的效用。如果我只能说
x.name=“blah”
x.phone=“blahblah”
那么在安全方面,阻止我说
x=x.new(name=>“blah”,phone=>“blahblah”)有什么用呢?为什么我要担心那些通常不会/不应该改变的东西会受到保护?好吧,很公平。这是否意味着我必须像这样写出每个条目,或者有没有一种方法可以通过哈希迭代来构建这些条目?您确实可以通过哈希迭代。类似于
hash.each{k,v{u.send(“{k}=”,v)}
的东西应该可以工作。似乎可以做到这一点。我想我还是有点困惑,为什么会这样。当我的种子无法以seeds.rb文件所显示的方式输入时,我感觉自己在修改自己的代码。