关于 Rails 关联的解释 - Rails 4
Explanation on Rails Associations - Rails 4
我是 rails 的新手,非常感谢您的帮助和建议,因为我发现这具有挑战性
Aim: i want the creator of the event to be able to select more than one user as
hosts for a created event (just like how facebook allows the creator of
a page to be be able to select users as admins of a created page). Is the below how my model and schema should be displayed?
我的目标是构建类似这张图片的东西。 Event1 我可以 select Ian & Jesse 作为主持人,Event2 我也可以 select Ian 再次作为主持人和 select Emma
这是我目前设想的建造方式(非常感谢您的指导):
models
user.rb
has_many events
event.rb
belongs_to user
host.rb
belongs_to user
has_many events
schema
users
name
email
events
title
address
user_id
hosts
user_id
event_id
开始将此作为评论写下来,但意识到它变得太罗嗦了。
你的模型坏了... event
有很多用户.. 它 belong_to
没有一个 user
.
您拥有的是用户和事件之间的多对多关系,需要通过连接 table(又名 associative/junction table)来解决。尽管这违反了 rails 约定,但您已经通过某种方式与主机 table 解决了这个问题。
你想要的是这样的:
型号
user.rb
has_and_belongs_to_many :events
event.rb
has_and_belongs_to_many :users
并创建一个引用两个模型的连接 table
users table
name
email
events table
title
address
events_hosts table
user_id
event_id
rails 约定是通过连接 table 的两个名称来命名连接 table,它按词法顺序连接 - 即主机之前的事件,连接在一起给 events_hosts
.
或者,如果您愿意,也可以创建连接模型:
EventHost
belongs_to :user
belongs_to :event
并将其他两个模型中的 has_and_belongs_to_many
修改为 has_many :event_hosts
- 数据库架构将保持不变。
我是 rails 的新手,非常感谢您的帮助和建议,因为我发现这具有挑战性
Aim: i want the creator of the event to be able to select more than one user as hosts for a created event (just like how facebook allows the creator of a page to be be able to select users as admins of a created page). Is the below how my model and schema should be displayed?
我的目标是构建类似这张图片的东西。 Event1 我可以 select Ian & Jesse 作为主持人,Event2 我也可以 select Ian 再次作为主持人和 select Emma
这是我目前设想的建造方式(非常感谢您的指导):
models
user.rb
has_many events
event.rb
belongs_to user
host.rb
belongs_to user
has_many events
schema
users
name
email
events
title
address
user_id
hosts
user_id
event_id
开始将此作为评论写下来,但意识到它变得太罗嗦了。
你的模型坏了... event
有很多用户.. 它 belong_to
没有一个 user
.
您拥有的是用户和事件之间的多对多关系,需要通过连接 table(又名 associative/junction table)来解决。尽管这违反了 rails 约定,但您已经通过某种方式与主机 table 解决了这个问题。
你想要的是这样的:
型号
user.rb
has_and_belongs_to_many :events
event.rb
has_and_belongs_to_many :users
并创建一个引用两个模型的连接 table
users table
name
email
events table
title
address
events_hosts table
user_id
event_id
rails 约定是通过连接 table 的两个名称来命名连接 table,它按词法顺序连接 - 即主机之前的事件,连接在一起给 events_hosts
.
或者,如果您愿意,也可以创建连接模型:
EventHost
belongs_to :user
belongs_to :event
并将其他两个模型中的 has_and_belongs_to_many
修改为 has_many :event_hosts
- 数据库架构将保持不变。