tweetモデルとuserモデルの関連付け アソシエーションの例①
tweetモデルとuserモデルが存在したら、tweetモデルにuser_id
カラムを追加する。
$ rails g migration add_user_id_to_tweets user_id:integer
下記でも同じ。
$ rails g migaration AddUserIdToTweets user_id:intger
migration行い、データベースに反映させる。
$ rake db:migrate
今まではtweetする際に、contentだけ送信すればよかったが、どのuserか判別するために今回からuser_idも送信する必要が有る。
<%= f.collection_select name属性, データベースから取得するデータ, 送信する値, 表示する値
_form.html.erb
<%= form_for(@tweet) do |f| %> ユーザーID <%= f.collection_select :user_id, User.all, :id, :id %> <% end %>
これだけでは保存ができない。 コントローラのストロングパラメータで許可すること。
tweets_controller.rb
private def tweet_params params.require(:tweet).permit(:content, :title, :user_id end
uer_idの入力を必須にしたいので、モデルに記述する。
models/tweet.rb
class Tweet < ActiveRecord::Base validates :title, presence :true validates :content, presence: true, length: {maximum: 140} validates :user_id, presence: true end