0

こんにちは私は次のモデルを持っています。

ユーザーモデル:

class User < ActiveRecord::Base
  attr_accessible :email, :password, :password_confirmation
  has_one :user_informations
  has_secure_password
end

UserInformationモデル:

class UserInformation < ActiveRecord::Base
  belongs_to :user
  attr_accessible :address, :address2, :business, :descripcion, :identification_number, :mobile_cell, :name, :phone_number
end

次に、ユーザー情報を作成および更新するためのビューとコントローラーを作成する必要があります。多くの質問があります。

1)コントローラーを生成するにはどうすればよいですか?

railsgコントローラーUserInformations

o

railsgコントローラーUserInformation

2)新しい、作成および更新アクションがユーザーIDをどのように認識しているか。

3)このユーザー情報のルートを設定するにはどうすればよいですか?

ありがとう。たぶんこれらは基本的な質問ですが、私はRailsに不慣れであり、これらすべてを行う方法がわかりません。

よろしくお願いします。

4

3 に答える 3

1

1)コントローラーには複数形を使用する必要があるため、機能しrails g controller UserInformationsます。

2 + 3)Restfulルートを設定できます:

resources :users do
  member do
    get 'user_information'
  end
end

上記のルートを使用すると、パスが作成されるため、使用できる作成または更新アクションで、たとえば、をusers/:id/user_information介してユーザーIDを知ることができます。params[:id]

user = User.find(params[:id])

どのユーザーがinformatonに表示されているかを確認します。

于 2012-11-04T18:46:37.800 に答える
1

user_informationテーブルとモデルにuser_id列が必要です。

1)rails g UserController

2)user_idをparamとして含めることができるため、新しいアクションの場合は次のようになります。

def new
  @user = User.find(param[:user_id])
  @user_information = @user.user_information.new
end

createおよびupdateアクションは、フォームparamsからユーザーIDを取得しますが、これらのアクションを使用するユーザーと、すべてのユーザーが他のユーザーの情報を更新できるようにするかどうかを検討する必要があります。そうでない場合は、ユーザーIDを非表示のパラメーターとして使用し、cancan(https://github.com/ryanb/cancan)などのgemを使用してアクセスを制限する必要があります

または、ネストされたリソースとして設定することもできます(http://railscasts.com/episodes/139-nested-resources)

3)単純なリソースの場合、これをroutes.rbファイルに追加できます

resource :user_information

またはネストされている場合は、

resource :users do
  member do
    resource :user_information
  end
end
于 2012-11-04T18:52:28.650 に答える
0

初めに

ユーザーモデルでは、

  has_one :user_information

アソシエーション名はhas_oneと単数である必要があるためです。

コマンドを与えることでコントローラーを作成できます

rails g controller UserInformation

コントローラーに付ける名前はあなた次第です。

新しいアクションでは、IDでユーザーを見つける必要があります。ログイン後、セッションにユーザーIDを保存できます。または、初めてユーザーを保存する場合は、ユーザーIDを渡す必要があります。

新しいアクションでは

user = User.find(session[:id])
user.user_information.create(params[:user_information])

私はあなたが最初にこれらすべてを研究する必要があると思います。いくつかの例を見てください。次に、試してください。ここで尋ねるのは早すぎます。

于 2012-11-04T18:42:58.207 に答える