0

ユーザーが仕事を作成して応募できるアプリを作成しています。

私が抱えている問題は、3 つのモデル間の関連付けを正しくすることです。

現在、私は以下を持っています:

 class App < ActiveRecord::Base
    belongs_to :job
    belongs_to :user
 end 

 class Job < ActiveRecord::Base
    belongs_to :user, :dependent => :destroy
    has_many :apps, :through => :users
 end

 class User < ActiveRecord::Base
    has_many :jobs
    has_many :apps, :through => :jobs
 end

Apps のデータベース テーブルには、関連付けが正しく行われるように、user_id と job_id の 2 つの列が追加されています。

また、新しいアプリケーションなどのフォームを作成する方法もわかりません。現在、私は以下を使用していますが、ユーザーのネストされたリソースとしてアプリを持っていないため、これが問題の原因であるかどうかはわかりません:

 class AppsController < ApplicationController

 def new
   @user = current_user
   @app = @user.apps.build
 end

def create
  @user = current_user
  @app = @user.apps.create(params[:app])
  if @app.save
    redirect_to user_path
  else
    render new_app_path
  end
end

<%= form_for [@app] do |f| %>

<div class = "field">
    <%= f.label :name %>
    <%= f.text_field :name %>
</div>

<div class = "field">
    <%= f.label :cover_letter %>
    <%= f.text_field :cover_letter %>
</div>

<div class = "field">
    <%= f.label :cv %>
    <%= f.text_field :cv %>
</div>

<%= f.submit "Submit" %>

<% end %>

このアプリの関連付けを設定する方法と、関連するフォームがこの設定で機能することを確認する方法の例を誰かが提供できれば素晴らしいことです.

よろしくお願いします。

誰にも役立つ場合に備えて、アプリをGithubにもプッシュしました:Github Link

4

1 に答える 1

1

ユーザーとジョブの間には多対多の関係があると思います。また、アプリケーションは結合テーブルとして (jobs_users として) 機能できます。

だからモデル...

class App < ActiveRecord::Base 
    belongs_to :job
    belongs_to :user
end

class Job < ActiveRecord::Base
     has_many :users
     has_many :apps, :through => :apps
end

class User < ActiveRecord::Base
     has_many :jobs,:dependent => :destroy
     has_many :apps, :through => :apps
end

ネストされたフォームについては、これを参照して
ください http://railscasts.com/episodes/196-nested-model-form-part-1?view=asciicast

于 2012-06-23T13:03:34.277 に答える