2014-03-04 142 views
0

我目前有一个名为owner_id的ActiveRecord模型“团队”。我需要一个类变量还是一个实例变量?

owner_id数据只是临时的,一旦after_create被调用,它将是多余的。

我想删除'owner_id'列并整理它,但保持功能正常。我怎样才能做到这一点?

有关背景:

class Team < ActiveRecord::Base 
    attr_accessible :name, :owner_id, :team_id 
    has_many :team_memberships, :dependent => :destroy 
    has_many :users, through: :team_memberships 
    accepts_nested_attributes_for :team_memberships 

    after_create :create_team_membership 

    private 

    def create_team_membership 
    TeamMembership.create(
     :user_id => self.owner_id, 
     :team_id => self.id, 
     :roles => "site_admin") 
    end 
end 
+0

如果更改owner_id作为一个虚拟的属性,我认为你可以删除列。我错了吗? –

回答

0

您应该能够添加attr_accessor,继续没有数据库列例如分配owner_id属性Team.new(:owner_id => 7)

class Team < ActiveRecord::Base 
    attr_accessor :owner_id 
end 

您还可以避免明确地分配team_id,如果你想:

class Team < ActiveRecord::Base 
    def create_team_membership 
    team_memberships.create(:user_id => owner_id, :roles => "site_admin") 
    end 
end 
+0

我需要将它保存在attr_accessible行中吗? – cjm2671

+0

是的,你需要把它保存在'attr_accessible'行。 'attr_accessor'只是为你的类添加一个属性,'attr_accessible'则指示哪些属性可以被批量分配。 – Ben

+0

令人惊叹 - 谢谢! – cjm2671

相关问题