2016-10-31 4 views
0

私はレールを学ぼうとしています。私は2テーブルのユーザーと投稿を持っている、私はユーザーから投稿への電子メールアドレスをリンクしたいが、私はそれについて行く方法がわからない。Railsの外部キーの混乱

私はテーブルをあらかじめ作成しましたが、これまでのところ、新しい選択ボックスにUsers.emailを追加する方法については、これまでindex.html.erbにあります。私form.html.erb

%= form_for(post) do |f| %> 
    <% if post.errors.any? %> 
    <div id="error_explanation"> 
     <h2><%= pluralize(post.errors.count, "error") %> prohibited this post from being saved:</h2> 

     <ul> 
     <% post.errors.full_messages.each do |message| %> 
     <li><%= message %></li> 
     <% end %> 
     </ul> 
    </div> 
    <% end %> 

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

    <div class="field"> 
    <%= f.label :time %> 
    <%= f.datetime_select :time %> 
    </div> 

    <div class="field"> 
    <%= f.label :body %> 
    <%= f.text_area :body %> 
    </div> 

    <div class="field"> 
    <%= f.label :user_id %> 
    <%= f.number_field :user_id %> 
    </div> 

    <div class="actions"> 
    <%= f.submit %> 
    </div> 
<% end %> 

<tbody> 
    <% @posts.each do |post| %> 
     <tr> 
     <td><%= post.title %></td> 
     <td><%= post.time %></td> 
     <td><%= post.body %></td> 
     <td><%= post.user_id %></td> 
     <td><%= link_to 'Show', post %></td> 
     <td><%= link_to 'Edit', edit_post_path(post) %></td> 
     <td><%= link_to 'Destroy', post, method: :delete, data: { confirm: 'Are you sure?' } %></td> 
     </tr> 
    <% end %> 

そして、この私がuser_idのフィールドを持っていますが、どのように私は、ユーザーのプライマリキーにそれをリンクに行くか見ることができるように?それからして電子メールのルックアップをする?おかげさまで

+0

ユーザーログイン機能も使用していますか? – Jayaprakash

+0

ユーザーログインはありません。電子メールを持つユーザーの一覧のみです。 – Definity

+0

私は自分の答えを更新しました。それを見てみましょう。 – Jayaprakash

答えて

1

ユーザログインが存在しているではない場合、あなたはできる、

、ユーザのログインが存在する場合は、以下のようにユーザーに属するポストを作成することができます

、あなたはポストとUserモデルとの間の関連性を持っていた

current_user.posts.create(post_params) 

を想定すると、ポスト作成画面の選択ボックスでユーザーを選択し、送信時にそのユーザーのuser_idを送信します。

ポストレコードにuser_idを保存するだけで、投稿とユーザーを関連付けることができます。例えば

<%= f.collection_select :user_id, User.all, :id, :email %> 

の記事を表示すると、あなたは以下のようにユーザーの電子メールをつかむことができ、

<td><%= post.user.email %></td> 

更新

ポストとユーザモデルとの間の関連付けを作成するには、実行次のコマンド。

rails g migration add_user_to_posts user:references 
rake db:migrate 
+0

彼らは関係がないので、私はforignキーを追加したかったのです – Definity

+0

私の答えを更新しました。それを見てみましょう。 – Jayaprakash