Artwork
、ArtworkTag
、およびの3 つのモデルがあります。Tag
ここで、ArtworkTag
と の間の m:n 関係を表します。タグ名のみを保存します。Artwork
Tag
Tag
:tag
からタグを作成する場合は、まずテーブルにが存在するArtworkTagsController
かどうかを確認し、存在しない場合は作成し、タグを使用して で関係を作成する必要があります。:tag
tags
id
ArtworkTag
以下では、このコントローラーから直接呼び出していることがわかりますがTag
、これは正しい方法ではないと思います。
懸念事項を適切に分離して、この状況をどのように処理する必要がありますか?
def create
tag = params[:artwork_tag][:tag].downcase
@tag = Tag.find_by_tag(tag)
if @tag.blank?
@tag = Tag.new(:tag => tag)
@tag.save
end
artwork_id = params[:artwork_tag][:artwork_id]
user_id = params[:artwork_tag][:user_id]
artwork_tag = {
"tag_id" => @tag.id,
"artwork_id" => artwork_id,
"user_id" => user_id
}
@artwork_tag = ArtworkTag.new(:tag_id => @tag.id, :artwork_id => artwork_id, :user_id => user_id)
@artwork_tag.save
respond_to do |format|
format.json { render :json => {
"id" => @artwork_tag.id, "tag" => @tag.tag, "artwork_id" => artwork_id },
:status => :created }
end
end