我现在有两个活动记录模型,User
并且Event
有很多事件,用户可以选择对事件感兴趣或决定参加事件。
如何编写迁移和模型?
我现在有两个活动记录模型,User
并且Event
有很多事件,用户可以选择对事件感兴趣或决定参加事件。
如何编写迁移和模型?
但是谁创造了这些事件?我认为这个协会对你有好处:
models/event.rb
has_many :users, :dependent => :destroy
models/user.rb
belongs_to :event
用户迁移应该是这样的:
class CreateUsers < ActiveRecord::Migration
def change
create_table :users do |t|
t.string :name
t.integer :event_id
t.timestamps
end
add_index :users, :event_id
end
end
事件迁移:
class CreateEvents < ActiveRecord::Migration
def change
create_table :events do |t|
t.string :name
t.timestamps
end
end
end
您可以在本指南中阅读有关 Rails 关联的更多信息:http: //guides.rubyonrails.org/association_basics.html
用户模型
has_many :events, :dependent => :destroy
事件模型
belongs_to :user
事件迁移:
class CreateEvents < ActiveRecord::Migration
def change
create_table :events do |t|
t.string :name
t.references :user
t.boolean :participant, :default => true, :null => false # the user is participant by default set, default to true
t.timestamps
end
end
end
正如 Shweta 所建议的,您需要多对多关系。实际上,您似乎需要两个,一个用于兴趣,一个用于参与。最简单的实现依赖于 has_and_belongs_to_many:
用户模型
has_and_belongs_to_many :interests, :class_name => Event, :join_table => "interests_users"
has_and_belongs_to_many :participations, :class_name => Event, :join_table => "participations_users"
事件模型
has_and_belongs_to_many :followers, :class_name => User, :join_table => "interests_users"
has_and_belongs_to_many :participants, :class_name => User, :join_table => "participations_users"
在您的连接表迁移中:
def change
create_table :interests_users, :id => false do |t|
t.integer :event_id
t.integer :user_id
end
create_table :participations_users, :id => false do |t|
t.integer :event_id
t.integer :user_id
end
end
你应该可以从这里继续