

以下のモデルを前提に話します。

## Post

  * id
  * title

## User

  * id
  * name

`Post`に`created_user_id`と`updated_user_id`を追加したいのですが、どのようにしたらよいのでしょうか。

`user_id`を追加するなら  
`raild g migration AddUserIdToPost user_id:references`とすればいいとおもうのですが、

`raild g migration AddCreatedUserIdToPost
created_user_id:references`としてしまうと`CreatedUser`というモデルと結びつけることになりますよね?

`created_user_id`と`updated_user_id`両方とも`User`と結び付ける方法を教えて下さい


CC BY-SA 3.0
2015-04-14T15:27:40.027
9163
2015-04-14T18:08:06.170
5855
question
ruby-on-rails rails-activerecord
railsのモデルのリレーションについて


マイグレーション一発で実現する方法は無さそうなので、

[code]

    rails g migration AddCreatedUserIdToPosts created_user_id:integer
    rails g migration AddUpdatedUserIdToPosts updated_user_id:integer
    
[/code]

としてintegerのカラムを追加した後、モデルに書いていくことになろうかと思います。

[code]

    class Post < ActiveRecord::Base
      belongs_to :created_user, :class_name => User
      belongs_to :updated_user, :class_name => User
    end
    
[/code]

ついでに User にも書いておくと良さそうです。

[code]

    class User < ActiveRecord::Base
      has_many :created_posts, :class_name => Post, :foreign_key => :created_user_id
      has_many :updated_posts, :class_name => Post, :foreign_key => :updated_user_id
    end
    
[/code]

Active Recordの関連付けについては、<http://railsguides.jp/association_basics.html>
に詳しくまとまっています。


CC BY-SA 3.0
2015-04-14T18:08:06.170
9167
2015-04-14T18:08:06.170
76
9163
answer