1

我现在有两个活动记录模型,User并且Event 有很多事件,用户可以选择对事件感兴趣或决定参加事件。

如何编写迁移和模型?

4

3 回答 3

0

但是谁创造了这些事件?我认为这个协会对你有好处:

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

于 2013-02-14T09:03:54.843 回答
0

用户模型

 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
于 2013-02-14T09:35:06.623 回答
0

正如 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

你应该可以从这里继续

于 2013-02-15T18:12:01.450 回答