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