Hi,
I have a many-to-many relationship via a join table. When I attempt to
set the values (i.e. the relationship) in the join table via the Rails
console I get the following error, does anyone know what could be wrong?
Thanks.
Note: I have set attr_accessible – see Grade model below.
ActiveModel::MassAssignmentSecurity::Error: Can’t mass-assign protected
attributes: id, grade_salary_attributes_attributes
In the Rails console I execute:
grade = Grade.find(:first)
params = {:grade => { :id => 1, :grade_salary_attributes_attributes => {
:id => 1, :grade_id => 1, :salary_attribute_id => 2 }}}
grade.update_attributes(params[:grade])
Below are the 3 models:
Grade Model
class Grade < ActiveRecord::Base
has_many :grade_salary_attributes
has_many :salary_attributes, :through => :grade_salary_attributes
accepts_nested_attributes_for :grade_salary_attributes, :reject_if =>
lambda {|attributed| attributed[‘grade_id’].nil? ||
attributed[‘salary_attribute_id’].nil?}
attr_accessible :description, :title,
:grade_salary_attributes_attributes
end
Salary Attribute Model
class SalaryAttribute < ActiveRecord::Base
has_many :grade_salary_attributes
has_many :grades, :through => :grade_salary_attributes
attr_accessible :description, :title
end
Grade Salary Attribute (Join) Model
class GradeSalaryAttribute < ActiveRecord::Base
belongs_to :grade
belongs_to :salary_attribute
attr_accessible :grade_id, :salary_attribute_id
end