Rails - 属性编写器方法无法访问对象值

时间:2013-01-04 18:57:24

标签: ruby-on-rails ruby-on-rails-3 activerecord

我有一个研究模型,它有很多领域,但我遇到了麻烦1

profesion_name

所以在我的学习模型中我有这个

class Study < ActiveRecord::Base
  attr_accessible :profesion_related, :profesion_name
  attr_accessor :profesion_related

  def profesion_related=(id)
    if id.present?
      if self.study_type_id == 4
        if self.country_id == 170
           #some code here
        else
           profesion_parent = Profesion.find(id)
           new_profesion = Profesion.create({g_code: profesion_parent.g_code, mg_code: profesion_parent.mg_code, name: self.profesion_name})
           self.profesion = new_profesion
        end
      end
    end
  end
end

但我在创建Profesion的行上收到错误,因为self.profesion_name为nil

如果在我的控制器中我这样做

  def create
    @study = Study.new(params[:study])
    respond_to do |format| 
      #here  
      puts @study.to_yaml 
      if @study.save
       .....
  end

我将在控制台中看到profesion_name有一个值 但如果我这样做

class Study < ActiveRecord::Base
  ...

  def profesion_related=(id)
    puts self.to_yaml
    ....
  end
end

我可以看到self.profesion_name为空

为什么会发生这种情况?

0 个答案:

没有答案