投稿を作成するためのフォームがあります。このフォームには投稿にもタグがあり、ユーザーが所有しています。フォームは仮想属性:tag_idsを使用しています。
このようなことをしたいと思います。ここでは、find_or_create_by_name_and_user_idを実行してから、current_user.idを渡します。
def tag_ids=(tags_string)
self.taggings.destroy_all
tag_names = tags_string.split(",").collect{|s| s.strip.downcase}.uniq
tag_names.each do |tag_name|
tag = Tag.find_or_create_by_name_and_user_id(tag_name, current_user.id)
tagging = self.taggings.new
tagging.tag_id = tag.id
end
end
私が読んだことから、これはそれがどのように機能するべきかではありません。現在のユーザーは、PostsContollercreateメソッドで呼び出される必要があります。
def create
@post = Post.new(params[:post])
@post.user = current_user
respond_to do |format|
if params[:commit]
@post.save
... 終わり
これは私が立ち往生しているところです。 パラメータがすべての属性を渡している場合、:name属性と:user_id属性を持つタグモデルにcurrent_user idを挿入するにはどうすればよいですか?
私はまた、これは私の協会のおかげでうまくいくはずだと読みました。
ユーザー-has_many投稿; has_manyタグ
投稿-belongs_toユーザー; has_manyタグ付け; タグ付けによるhas_manyタグ
タグ-多くのタグ付けがあります。has_manyはタグ付けを通じて投稿します。所属するユーザー
タグ付け-belongs_topost; 所属するタグ