0

可能重复:
无法批量分配受保护的属性

我的资源树:

camrade has_many resumes 
resumes has_many experiences 
experience belongs_to company

同志和简历、经历相互嵌套。

我想在一页上改变这一切。在控制器中我有字符串:

  @camrade.update_attributes(params[:camrade])

从提交后的视图来看,这个参数是:

"camrade"=>{
    "resumes_attributes"=>{
      "0"=>{
        "title"=>"first",
        "id"=>"4"},
      "1"=>{
        "title"=>"second",
        "experiences_attributes"=>{
          "1344617107870"=>{
            "company_name"=>"Some company"
          }
        }
      }
    }
  }

因为 Experience 没有 company_name,所以我这样写:

    class Experience < ActiveRecord::Base
      belongs_to :company
      def company_name
        company.try(:name)
      end
      def company_name=(name)
        self.company = Company.find_or_create_by_name(name) if name.present?
      end
    end

但仍然出现错误“无法批量分配受保护的属性:company_name”。

4

1 回答 1

2

添加attr_accessible :company_name到您的体验模型。您更新的代码应类似于:

class Experience < ActiveRecord::Base
  attr_accessible :company_name
  belongs_to :company

  def company_name
    company.try(:name)
  end

  def company_name=(name)
    self.company = Company.find_or_create_by_name(name) if name.present?
  end
end

您可以在此处阅读有关 Rails 批量分配保护的更多信息:http: //guides.rubyonrails.org/security.html#mass-assignment

于 2012-08-11T12:25:11.143 回答