記事にタグ付けをする簡単なアプリを作っていたところで、エラーが出ました。
app/controllers/tweets_controller.rb
class TweetsController < ApplicationController
def index
@tweets = Tweet.all.order(created_at: :desc)
end
def create
@tweet = TweetsTag.new(tweet_params)
if @tweet.valid?
@tweet.save
return redirect_to root_path
else
render "new"
end
end
private
def tweet_params
params.require(:tweets_tag).permit(:message, :name)
end
end
app/models/tweets_tag.rb
class TweetsTag
include ActiveModel::Model
attr_accessor :message, :name
with_options presence: true do
validates :message
validates :name
end
def save
tweet = Tweet.create(message: message)
tag = Tag.where(name: name).first_or_initialize
tag.save
TweetTagRelation.create(tweet_id: tweet.id, tag_id: tag.id)
end
end
動きとしては投稿したときにストロングパラメーターでtweets_tagモデルに:message, :nameをpermitで値を渡します。
そしてapp/models/tweets_tag.rbが走るわけです。