我有一个创建帖子的表格。此表单在帖子上也有标签,并且归用户所有。该表单使用虚拟属性: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
从我读到的内容来看,这不是它应该如何工作的。应该在 PostsContoller 创建方法中调用当前用户。
def create
@post = Post.new(params[:post])
@post.user = current_user
respond_to do |format|
if params[:commit]
@post.save
... 结尾
这就是我卡住的地方。 如果参数正在传递所有属性,我如何将 current_user id 注入具有 :name 和 :user_id 属性的标签模型中?
我还读到,由于我的关联,这应该可以工作。
用户 - has_many 帖子;has_many 标签
发布 - 属于用户;has_many 标签;has_many 标签通过标签
Tag - 有很多标签;has_many 通过标签发布帖子;属于用户
标记 - belongs_to 帖子;属于_to 标签