快速問題我正面臨一個簡單的問題(我想用作一種方式來理解一些關於關聯和軌道的更深層次的東西)。這裏所說:簡單的關聯體系結構和實現在軌道上的紅寶石
兩個相關的模型
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
錯誤。
爲了解決這個問題,我在Employee
模型中加了attr_accessible :salary
,但是隻是將錯誤更改爲unknown attribute: salary
。
根據我的理解,我必須首先改變新員工中的某些內容,然後在員工模型和控制器中進行更改,以便接受薪水值並知道如何處理它,對嗎?
我也看到accepts_nested_attributes_for
使用,但我不完全確定它應該去哪個協會的一邊 - 因爲我不完全確定該協會是以最佳方式構建的。
是不是重複的代碼(在我的意思是'工資'在這兩種模式)?並且不需要其他方法(如果沒有特別設置,確保角色薪水設置爲員工的薪水)? (我多次調用'attr_accessible',因爲我不喜歡擁有所有屬性,我想我應該把它叫做一個,然後縮進不同行中的所有屬性) – sebkkom 2013-03-27 17:01:24
我已經更新了我的答案,回答你的問題。 – deefour 2013-03-27 17:07:14
非常感謝,我的印象是,我應該避免你描述的那樣好。感謝您澄清關於'工資'方法。 :) – sebkkom 2013-03-27 17:25:00