如何在控件中传递用户id并在表中输入Ruby on Rails中的多态关联

时间:2014-06-02 12:22:54

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-3.2 polymorphic-associations

在创建新标记时,我一整天都在努力传递用户ID并输入标记表

标记控制器中,我有以下代码:

def create
    @taggable = Blog.find(params[:blog_id])
    @tagger = current_user
    @tagging = @taggable.taggings.build(params[:taggings])
    respond_to do |format|
      if @tagging.save!
        format.js {render status: :created}       
      end
    end
  end

在此标记模型中,我有此代码

 belongs_to :taggable, :polymorphic => true
 belongs_to :tagger, :polymorphic => true

在此博客模型中,我有此代码

attr_accessible :description,:user_id,:title,:taggings_attributes,:tagger_attributes
 has_many :taggings, as: :taggable
 has_many :tagger, as: :taggable,:class_name=>"Tagging"

现在我想要这样的东西

@tagging = @taggable.@tagger.taggings.build(params[:taggings])

1 个答案:

答案 0 :(得分:2)

您可以在构建新的Tag对象之后以及保存之前随时分配用户。

例如,

@tagging = @taggable.taggings.build(params[:taggings])
@tagging.tagger_id = @tagger.user.id
@tagging.tagger_type = 'User'

您也可以直接分配用户,而不是tagger_id和tagger_type。

@tagging = @taggable.taggings.build(params[:taggings])
@tagging.tagger = @tagger.user