2013-07-28 48 views
0

我有一个用户模型的模型(这我想重新命名为句法原因UserAccount的)创建一个条件

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

然后,我有一个辅导模式

class Tutor < ActiveRecord::Base 
    belongs_to :user 
end 

不过,我只如果将is_tutor布尔值设置为true,则要创建辅导员信息。 is_tutor是用户表中的一列。

该逻辑应该添加到用户has_one逻辑中的验证或条件中吗?这将如何完成?

谢谢!

+0

你想在什么时候创建导师?在创建user_account之后? – rmagnum2002

+0

创建用户帐户。然后,用户可以通过在编辑帐户页面中选择一个check_box来决定他们是否想成为学生或导师(甚至是两者)。 – DaniG2k

+0

因此,他将选择此选项并更新其帐户,现在,当用户再次编辑他的sccount并取消选中该选项时会发生什么? – rmagnum2002

回答

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或没有导师更新。

+0

我认为这正是我正在寻找的。只有一件事是不明确的:self.tutor.find_or_create_by_user_id ...这是添加到用户表吗?或者它是否添加到导师表?如果后者,那么为什么它需要自我? – DaniG2k

+0

我修改了答案 – rmagnum2002