Devise cancanリポジトリに基づくアプリケーションがあります。
私が追加したいのは、ユーザーが日を選択し、その日の一定の時間を記録し、それらの時間を関連付けるプロジェクトを選択し、何をしたかを言う方法です。これを最も簡単な方法で行うにはどうすればよいですか。おそらく、役立つ宝石も使用します。
Devise cancanリポジトリに基づくアプリケーションがあります。
私が追加したいのは、ユーザーが日を選択し、その日の一定の時間を記録し、それらの時間を関連付けるプロジェクトを選択し、何をしたかを言う方法です。これを最も簡単な方法で行うにはどうすればよいですか。おそらく、役立つ宝石も使用します。
実際のコードと疑似コードを組み合わせたものを次に示します。
コマンド ラインからスケジュールとプロジェクト リソースを作成します。
rails g resource log day:date duration:float description:string
rails g resource project title:string
、およびLog
と関連付ける:User
Project
Log
# app/models/user.rb
class User < ActiveRecord::Base
has_many :logs
# app/models/log.rb
class Log < ActiveRecord::Base
belongs_to :user
has_one :projects
end
# app/models/project.rb
class Project < ActiveRecord::Base
belongs_to :log
end
これにより、開始するための一般的な関連付けフレームワークが得られます。次に、ログを作成するためのフォームでユーザーが表示されるように、ビューを構築します。date_select
DateHelperを使用して日付ドロップダウンを作成します。collection_select
onを使用して、すべてのプロジェクトのドロップダウンを作成しますProject.all
。次に、コントローラーで、次のようなことができるはずです。
# app/controllers/projects_controller.rb
class ProjectsController < ActionController
def create
project = Product.new(params[:project])
if project.save
current_user << project
...
else
...
end
end
end