Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 我需要类变量还是实例变量?_Ruby On Rails_Activerecord - Fatal编程技术网

Ruby on rails 我需要类变量还是实例变量?

Ruby on rails 我需要类变量还是实例变量?,ruby-on-rails,activerecord,Ruby On Rails,Activerecord,我目前有一个ActiveRecord模型“Team”,其列名为owner\u id 所有者id数据只是临时的,在调用\u create之后将是冗余的 我想删除“owner\u id”列并整理一下,但要保持功能正常工作。我该怎么做 背景资料: class Team < ActiveRecord::Base attr_accessible :name, :owner_id, :team_id has_many :team_memberships, :dependent => :d

我目前有一个ActiveRecord模型“Team”,其列名为
owner\u id

所有者id数据只是临时的,在调用\u create之后将是冗余的

我想删除“owner\u 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
class团队:destroy
拥有多个:用户,通过::团队成员身份
为团队成员身份接受\u嵌套的\u属性\u
创建后:创建团队成员
私有的
def创建团队成员
TeamMembership.create(
:user\u id=>self.owner\u id,
:team_id=>self.id,
:角色=>“站点管理员”)
终止
终止

您应该能够添加一个
attr\u访问器
,并继续分配
owner\u id
属性,而无需db列,例如
Team.new(:owner\u id=>7)


如果您将owner\u id更改为虚拟属性,我认为您可以删除该列。我错了吗?我需要把它放在attr\u accessible行中,对吗?是的,你需要把它放在
attr\u accessible
行中
attr\u accessor
只向类中添加一个属性,而
attr\u accessible
指示哪些属性可以批量分配。
class Team < ActiveRecord::Base
  attr_accessor :owner_id
end
class Team < ActiveRecord::Base
  def create_team_membership
    team_memberships.create(:user_id => owner_id, :roles => "site_admin")
  end
end