0

Devise cancanリポジトリに基づくアプリケーションがあります。

私が追加したいのは、ユーザーが日を選択し、その日の一定の時間を記録し、それらの時間を関連付けるプロジェクトを選択し、何をしたかを言う方法です。これを最も簡単な方法で行うにはどうすればよいですか。おそらく、役立つ宝石も使用します。

4

1 に答える 1

0

実際のコードと疑似コードを組み合わせたものを次に示します。

コマンド ラインからスケジュールとプロジェクト リソースを作成します。

rails g resource log day:date duration:float description:string
rails g resource project title:string

、およびLogと関連付ける:UserProjectLog

# 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_selectDateHelperを使用して日付ドロップダウンを作成します。collection_selectonを使用して、すべてのプロジェクトのドロップダウンを作成します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
于 2013-06-10T01:48:10.640 に答える