ihatov08 blog

プログラミング初心者だけどRailsとSwiftマスターします

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