我刚刚开始使用 Rails 进行编码。我正在使用:Rails 3.2.8 ruby 1.9.3p194
我创建了一个迁移和一个相应的模型,它们都在它们应该存在的文件中(为了简洁起见,我将它们一起呈现):
class CreateMovies < ActiveRecord::Migration
def up
create_table 'movies' do |t|
t.string 'title'
t.timestamps
end
end
def down
drop_table 'movies'
end
end
class Movie < ActiveRecord::Base
end
因此,我想进入“rails 控制台”并使用数据库作为学习过程。
这是我输入的内容和收到的错误消息:
1.9.3p194 :021 > k = Movie.new(:title => 'coco')
ActiveModel::MassAssignmentSecurity::Error: Can't mass-assign protected attributes: title
我不得不说,如果我附加 :without_protection => true,上述语句可以正常工作。
我查阅了关于批量分配的信息,我明白这是我们应该非常小心的事情。但是,似乎默认情况下rails激活了质量分配保护。就我而言,我想使用哈希创建条目,这对于调试和学习非常有用!
有没有办法取消这种保护?我想默认有公共属性!我怎样才能做到这一点?
奇怪的是,在我的网络研究中,我得出的结论是默认情况下不存在此功能,即默认情况下 ActiveModel 不会创建受保护的属性。(http://stackoverflow.com/questions/3764899/is-there-a-way-to-make-rails-activerecord-attributes-private)但就我而言,所有属性都是私有的!
在我的代码中,将来,我应该尝试单独分配所有属性吗?这将是乏味的。有没有更好的方法既能保证安全又能避免这个繁琐的过程?
提前从我的内心深处感谢您!