如何在user_id上的每条记录中传递current_user?轨道

时间:2015-12-11 13:43:39

标签: ruby-on-rails ruby-on-rails-4 nested associations nested-forms

我想将user_id从current_user传递给我的嵌套表单中的每个关联。

def create
    @entity = Entity.new(entity_params.merge(user: current_user)) 

    # entity has_many :boxes and in form i'm making them more than one
    @entity.boxes.user_id = current_user.id if current_user 

    # entity has_many :orders and in form i'm making them more than one
    @entity.orders.user_id = current_user.id if current_user
end 

我收到此错误

  

未定义的方法`user_id ='

我需要一种方法如何给每个boxorder user_id = current_user。数据库中的所有表都有user_id列,每个模型都有belongs_to :user

1 个答案:

答案 0 :(得分:0)

@entity.boxes@entity.orders属于<ActiveRecord::Associations::CollectionProxy []>类型,即您必须对其进行迭代才能获得具有的boxorder个别项目关联的user

@entity.boxes.each do |box|
  box.user_id = current_user.id if current_user.present?
end

如果要将更改保存到数据库,还可以使用:

box.update!(user: current_user) if current_user.present?

P.S。我想User has_many :boxes:orders