在条件上创建模型

时间:2013-07-28 21:53:22

标签: ruby-on-rails model

我有一个用户模型(我考虑因语法原因重命名UserAccount)

class User < ActiveRecord::Base
  has_one :tutor, dependent: :destroy
end

然后我有一个导师模型

class Tutor < ActiveRecord::Base
  belongs_to :user
end

但是,如果is_tutor布尔值设置为true,我只想创建导师信息。 is_tutor是User表中的一列。

是否应将此逻辑添加到用户的has_one逻辑内的验证或条件中?怎么做呢?

谢谢!

1 个答案:

答案 0 :(得分:1)

我的想法是否可以做到这一点。

<强>模型/ user.rb

after_update :check_tutor

def check_tutor
  if self.is_tutor?
    Tutor.find_or_create_by_user_id(self.id)
  else
    self.tutor.destroy
  end
end

after_update回调将在每次用户更新时检查用户ID或不是导师。