0

Devise cancan ブートストラップリポジトリの上に構築された Rails アプリケーションがあります。

従業員が時間を記録するためのページを作成しようとしています。足場をセットアップすると、その足場のフォームを含むビューが生成されますが、私の質問は、メニューからそのページにリンクする方法と、ログに記録された時間とログに記録された従業員が関連付けられるようにするにはどうすればよいかということです。の。

私の足場は

rails g scaffold hours email:string day:date hours:integer
4

1 に答える 1

0

したがって、ユーザーの作成と認証に加えて、Devise は以下を追加しました。

  • ユーザー モデル (データベース内のユーザー テーブルに基づく)
  • コントローラーコードとビューで利用可能な current_user メソッド

関連するすべてのモデルで電子メールの代わりにforeign_keyを使用したい場合user_id、足場の生成は次のようになります(名前をあなたのものから少し変更しましたが、アイデアはわかります)

rails g scaffold TimeSheet user_id:integer day:date hours_worked:integer minutes_worked:integer

User次に、モデルと新しく作成されたモデルを更新してTimeSheet、2 つのモデル間の関連付けを作成する必要があります。

詳細については、Rails ガイドを参照してください: http://guides.rubyonrails.org/association_basics.html

class User
  # ... 
  has_many :time_sheets
end

class TimeSheet
  belongs_to :user
end

createスキャフォールドで生成されたビューから user_id を削除し、updateアクション中にコントローラーに設定する必要があります。

def create
  @time_sheet = TimeSheet.new(params[:time_sheet])
  @time_sheet.user = current_user

  # ....
于 2013-06-12T14:58:19.487 に答える