我有三个模型,Artwork
、ArtworkTag
和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