0

在我的应用程序中,用户可以创建个人资料,但在用户个人资料“公开”之前需要填写一系列必填字段。

我正在处理一个after_update回调,它运行一系列检查以查看是否填写了必填字段。

这是方法:

# User Model
after_update :check_public_status

def check_public_status
    if self.name.blank? || self.state.blank? || self.city.blank? || 
        self.high_school.blank? || self.recruit_year.blank? || self.birthday.blank? || 
        self.stat(:height).blank? || self.stat(:weight).blank?
      self.update_attribute :public, false
      self.update_attribute :removed_from_listing, true
    else
      self.update_attribute :public, true
      self.update_attribute :removed_from_listing, false
    end
  end

有没有更好的方法来做到这一点而没有那个讨厌的IF/Else声明?

4

1 回答 1

1

这个怎么样:

用户模型

after_update :update_public_status!

def update_public_status!
  required_fields_present = 
    [
      name, state, city, 
      high_school, recruit_year,
      birthday, stat(:height), stat(:weight)
    ].all?
  if required_fields_present
    make_public!
  else
    make_private!
  end
end

def make_public!
  update_attribute :public, true
  update_attribute :removed_from_listing, false
end

def make_private!
  update_attribute :public, false
  update_attribute :removed_from_listing, true
end
于 2013-07-25T16:13:17.093 回答