Ruby on rails 3 如何创建一个用户';拥有';Rails 3中的另一个用户?

Ruby on rails 3 如何创建一个用户';拥有';Rails 3中的另一个用户?,ruby-on-rails-3,Ruby On Rails 3,所以我已经有了基本的设置 这是我的用户模型: # == Schema Information # Schema version: 20110102225945 # # Table name: users # # id :integer primary key # email :string(255) # encrypted_password :string(128) # password_salt

所以我已经有了基本的设置

这是我的用户模型:

# == Schema Information
# Schema version: 20110102225945
#
# Table name: users
#
#  id                   :integer         primary key
#  email                :string(255)
#  encrypted_password   :string(128)
#  password_salt        :string(255)
#  reset_password_token :string(255)
#  remember_token       :string(255)
#  remember_created_at  :datetime
#  sign_in_count        :integer
#  current_sign_in_at   :datetime
#  last_sign_in_at      :datetime
#  current_sign_in_ip   :string(255)
#  last_sign_in_ip      :string(255)
#  created_at           :datetime
#  updated_at           :datetime
#  username             :string(255)
#  f_name               :string(255)
#  l_name               :string(255)
#

class User < ActiveRecord::Base
  # Include default devise modules. Others available are:
  # :token_authenticatable, :confirmable, and :lockable
  devise :database_authenticatable, :registerable, :timeoutable,
         :recoverable, :rememberable, :trackable, :validatable

  # Setup accessible (or protected) attributes for your model
  attr_accessible :email, :password, :password_confirmation, :remember_me

  has_and_belongs_to_many :projects
  has_many :stages
  has_many :uploads
  has_many :comments
  has_many :assignments
  has_many :roles, :through => :assignments
  has_and_belongs_to_many :owners,
                  :class_name => "User",
                  :association_foreign_key => "owner_id",
                  :join_table => "ownership"

  def role_symbols
    roles.map do |role|
      role.name.underscore.to_sym
    end
  end  
end
#==架构信息
#架构版本:20110102225945
#
#表名:用户
#
#id:整数主键
#电子邮件:string(255)
#加密密码:字符串(128)
#密码:字符串(255)
#重置密码\u令牌:字符串(255)
#记住\u标记:字符串(255)
#还记得在:datetime创建的吗
#计数中的符号:整数
#当前登录时间:datetime
#上次登录时间:datetime
#ip中的当前符号:字符串(255)
#ip中的最后一个签名:字符串(255)
#创建时间:datetime
#更新时间:datetime
#用户名:字符串(255)
#f_名称:字符串(255)
#l_名称:字符串(255)
#
类用户:分配
拥有和属于很多人:所有者,
:class_name=>“用户”,
:关联\外部\密钥=>“所有者\ id”,
:join_table=>“所有权”
定义角色符号
roles.map do | role|
role.name.下划线.to_sym
结束
结束
结束
我的榜样是这样的:

# == Schema Information
# Schema version: 20101117094659
#
# Table name: roles
#
#  id         :integer         not null, primary key
#  name       :string(255)
#  created_at :datetime
#  updated_at :datetime
#

class Role < ActiveRecord::Base
    has_many :assignments
    has_many :users, :through => :assignments
end
# == Schema Information
# Schema version: 20101117094659
#
# Table name: assignments
#
#  id         :integer         not null, primary key
#  created_at :datetime
#  updated_at :datetime
#  user_id    :integer
#  role_id    :integer
#

class Assignment < ActiveRecord::Base
    belongs_to :role
    belongs_to :user
end
#==架构信息
#架构版本:20101117094659
#
#表名称:角色
#
#id:整数不为空,主键
#名称:字符串(255)
#创建时间:datetime
#更新时间:datetime
#
类角色:分配
结束
作业如下所示:

# == Schema Information
# Schema version: 20101117094659
#
# Table name: roles
#
#  id         :integer         not null, primary key
#  name       :string(255)
#  created_at :datetime
#  updated_at :datetime
#

class Role < ActiveRecord::Base
    has_many :assignments
    has_many :users, :through => :assignments
end
# == Schema Information
# Schema version: 20101117094659
#
# Table name: assignments
#
#  id         :integer         not null, primary key
#  created_at :datetime
#  updated_at :datetime
#  user_id    :integer
#  role_id    :integer
#

class Assignment < ActiveRecord::Base
    belongs_to :role
    belongs_to :user
end
#==架构信息
#架构版本:20101117094659
#
#表名:分配
#
#id:整数不为空,主键
#创建时间:datetime
#更新时间:datetime
#用户id:integer
#角色\u id:integer
#
类赋值
我有一个所有权表,它有
owner\u id
user\u id

我的表中有一个条目对应于两个不同的用户。所以我的问题是,我如何与join_表的用户/记录交互

我想知道以下几点:

  • 在rails控制台中,如何与所有权表中的数据交互?我尝试了
    owner.all
    owner.all
    owner.all
    owner.all
    ,都没有用。考虑到这种结构与常规的关联有点不同,我该怎么做呢
  • 在我的ERB中,如何列出与当前用户关联的所有“用户”?我访问与当前用户关联的项目的方式如下:
    current_user.projects.each do | project |
    然后我可以执行
    project.name
    等,但不太确定如何执行

谢谢

以下是对我有效的方法(示例是父/子关系,但概念上与所有者/所有者关系相同)


希望这有帮助

那么您创建了一个名为“关系”的模型?还是所有这些都在你的用户模型中?包括您的
类关系
?不,我创建了关系模型和相应的迁移。哦,我知道您在这里做了什么。我认为区别在于,尽管我可能可以使用它,但对于您的用户,每个用户都可以有父母和孩子,对吗?而我的用户只能是设计师或客户。他们不可能两者兼而有之。一个客户可以有许多设计师,而设计师可以有许多客户。但是一个用户不能既是设计师又是客户,或者两者兼而有之。考虑到这些限制,你会如何调整你的解决方案?顺便说一句,你给我的这个解决方案非常棒。谢谢你。工作起来很有魅力。还有一个问题,如何创建新的
设计器
客户端
?我明白了。在这种情况下,您可能希望使用单表继承()使设计器和客户端类从用户继承;并拆分has_many并在相应的继承类中定义它们。这样,您可以创建设计器和客户端,并且可以使用@designer.clients,但不能使用@designer.designers