Ruby on rails Rails属性仅可用于seed.rb?
我通过PragProg自学Rails(显然已经过时了——我使用的是Rails 3.2.3)。我发现了这本书没有提到的seeds.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打开这些东西,或者关闭阻止批量分配的默认功能。但我想保持任何安全设置意味着。我不希望这些条目在种子设定后被编辑。我只需要先把这些输入数据库 我在这里看不到什么?如何在不关闭保护的情况下为这些数据设定种子?似乎种子应该是
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文件所显示的方式输入时,我感觉自己在修改自己的代码。