2014-03-04 3 views
0

현재 ActiveRecord 모델 'Team'에 owner_id이라는 열이 있습니다.클래스 변수 또는 인스턴스 변수가 필요합니까?

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

난 당신이 열을 삭제할 수 있습니다 생각합니다. 내가 잘못? –

답변

0

당신은 attr_accessor를 추가하고, 예를 들어 DB 컬럼없이 owner_id 속성을 계속 할당 할 수 있어야한다 : 배경에 대한

당신이 원하는 경우 Team.new(:owner_id => 7)

class Team < ActiveRecord::Base 
    attr_accessor :owner_id 
end 

당신은 명시 적으로 team_id을 할당 피할 수 있습니다 : 가상 속성으로 owner_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

관련 문제