关于我面临的一个简单问题的快速问题(我想以此作为一种方式来更深入地了解有关关联和导轨的一些事情)。开始:
两个相关的模型是
class Employee < ActiveRecord::Base
attr_accessible :name
attr_accessible :age
belongs_to :role
attr_accessible :role_id
end
class Role < ActiveRecord::Base
attr_accessible :title
attr_accessible :salary
has_many :employees
end
这样每个新员工都有固定的工资,根据他的角色(大多数情况下都是如此)。但是,如果我想为特定员工设置不同的工资怎么办?
到目前为止simple_form
,我已经写了以下内容:
<%= f.input :name, label: 'Employee Name', :required => true %>
<%= f.association :role, as: :radio_buttons, :required => true %>
<%= f.input :salary, label: 'Employee Salary', :input_html => { :value => 0 }, :required => true %>
这当然给了我一个can't mass assign protected attributes: salary
错误。
为了解决这个问题,我添加attr_accessible :salary
到Employee
模型中,但这只是将错误更改为unknown attribute: salary
.
据我了解,我必须首先在新员工中进行更改,然后在员工模型和控制器中进行更改,以便它接受工资值并知道如何处理它,对吗?
我也见过accepts_nested_attributes_for
使用过的,但我不完全确定它应该放在关联的哪一边——因为我也不完全确定关联是以最佳方式构建的。