如何根据活动记录中的其他两个值在rails活动记录中设置默认值?

时间:2015-06-11 18:13:59

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

我的用户是(布尔)学生,导师,或者两者都是'。除非另有说明,否则我的用户在所有3个用户中都会自动为false,但我希望默认值为'两者都是'基于用户既是学生又是导师,因此如果学生和导师是布尔人,则两者都是学生和&导师。如何创建迁移来执行此操作?

迁移文件无效。

class ChangeUserBoth < ActiveRecord::Migration
  def change
change_column :users, :both, :boolean, :default => :student && :tutor
  end
end

1 个答案:

答案 0 :(得分:0)

在编写迁移代码时,您无法通过条件方法,但您可以通过以下方式获得所需的结果:

# In your model code    
before_save :set_both_based_on_student_and_tutor

private
def set_both_based_on_student_and_tutor
  # Ternary way saves your form 'both' being 'nil'. It would always 
  # either be true or false
  self.both = (self.student && self.tutor) ? true : false
end