我正在尝试构建一个非常简单的AddressBook rails应用程序.但是,我收到此错误"无法批量分配受保护的属性:city_id".我怎样才能解决这个问题?请随时在下面的rails代码中添加任何评论/建议.谢谢.
我如何创建项目(从头开始):
rails new demo
rails generate model City name:string
rails generate scaffold User name:string city:references
rake db:migrate
Run Code Online (Sandbox Code Playgroud)
DB/seeds.db:
City.create(name: "City1")
City.create(name: "City2")
City.create(name: "City3")
Run Code Online (Sandbox Code Playgroud)
rake db:seed
改变这条线<%= f.text_field :city %>从app/views/users/_form.html.erb到<%= f.collection_select :city_id, City.all, :id, :name %>
将user.rb自动生成的行更改belongs_to :city为has_one :city.
添加belongs_to :city到city.rb
PS:我使用的是Rails 3.2.3和Ruby 1.9.3.
tma*_*ini 68
有一个重要的安全更改rails 3.2.3要求您通过设置config.active_record.whitelist_attributes为明确允许批量分配false
http://weblog.rubyonrails.org/2012/3/30/ann-rails-3-2-3-has-been-released/
http://www.h-online.com/security/news/item/Rails-3-2-3-makes-mass-assignment-change-1498547.html
或者(并且更好),而不是允许大规模分配,您只需要为attr_accessible您希望能够更改的模型中的属性设置,例如
attr_accessible :city_id, :name # list all fields that you want to be accessible here
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
52821 次 |
| 最近记录: |