我有一个Group
和一个User
,它们通过has_many:through关系相关联。我的:通过表称为Groupuser
。该表具有group_id,user_id和状态。在创建我的组时,我要设置current_user的状态被添加到1(默认值为0)。
在我的组中设置current_user完全没问题,并且完美无缺;它的地位我无法弄明白。这就是我现在所拥有的:
def create
@group = Group.new(group_params)
respond_to do |format|
if @group.save
@group.users << current_user
@group.groupusers.status << 1
format.html { redirect_to @group, notice: 'done' }
format.json { render action: 'show', status: :created, location: @group }
else
format.html { render action: 'new' }
format.json { render json: @group.errors, status: :unprocessable_entity }
end
end
end
上面的代码会为#`
抛出错误:undefined method
status'
我对Groupuser的架构看起来像这样:(我试过没有ID,也无济于事)
create_table "groupusers", force: true do |t|
t.integer "group_id"
t.integer "user_id"
t.integer "status", default: 0
end
答案 0 :(得分:1)
@group.groupusers
是一个数组,activerecord关系。您不能设置这样的属性,您需要逐个设置它或在将它附加到组之前。
@group.groupusers.each do |gu|
gu.status = 1
gu.save
end
或
groupuser = GroupUser.new user_id: current_user.id, status: 1
@group.groupusers << groupuser
答案 1 :(得分:0)
尝试 @ group.groupusers.status = 1
@ group.save!