我有一个包含许多项目的用户模型。评级属于用户和项目。
在数据库中,我将 rating.user_id 设置为不为 NULL。
当我创建一个项目时,我想这样做:
def create
current_user.items.create(params[:item]).ratings.create(params[:rating]
redirect_to items_path
end
但是,这与 SQL 错误“user_id 不能为零”有关
所以我将create方法重写为
def create
current_user.items.create(params[:item]).ratings.create(params[:rating].merge({:user_id => current_user}))
redirect_to items_path
end
效果很好。
但是,我曾认为将创建方法链接到当前用户的接收器会填充评级的 user_id。有谁知道为什么不?
TIA。