0

あるデータベースインデックスのIDを別のデータベースにマッピングするためのuser_id列を作成するにはどうすればよいですか?

has_manyとbelongs_toを知っていますが、モデルの作成時にuser_idを指定する必要があるかどうかわかりません...

rails g model User name:string email:string

rails g model Card inputA:string inputB:string-追加しuser_id:integerますか?

次に、、、has_many :cardsおよびbelongs_to :user

has_manyまたは、訴訟を起こしたときにレールが自動的にこれを行いますかbelongs_to

4

3 に答える 3

2

user_id:integerモデルから独立した移行に情報が必要なため、を追加します。

あなたがそこで提案したことは正しいです。

于 2012-02-17T11:31:34.500 に答える
0

Isotopeが言ったことは、既存のモデルカードに列を追加する必要があるということです。Railsでこれを行う簡単な方法があります。以下を使用して、モデルに列を追加する移行を生成するだけです。

rails generate migration add_UserID_to_cards userID:integer

移行ファイルは次のようになります。

class AddUserIDToCard < ActiveRecord::Migration
  def self.up
    add_column :cards, :userID, :integer
  end

  def self.down
    remove_column :cards, :userID
  end
end

しかし...通常、各ユーザーはデータベース内ですでに一意のIDを持っているので、これを行う必要はないと思います。代わりに、ユーザーからカードを作成する場合、リンクは自動的に実行されます。つまり、カードコントローラーのcreateメソッドでは次のようになります。

@card = current_user.cards.build(params[:card])

これは完全なトピックです。まずはhttp://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.htmlを参照することをお勧めします。 それ以外の場合は、Hartlチュートリアル「TheRails3チュートリアル」で完全な例を提供します。本の最後の章(マイクロポストをユーザーにリンクする場合)。

これがお役に立てば幸いです。

于 2012-02-17T12:46:43.333 に答える
0
@card = current_user.cards.build(params[:card]) 

私のために完璧に働いた。user_idが自動的にインデックスに登録されないという問題がありました。

于 2013-08-13T11:49:07.353 に答える