Rails:即使我调用了@ user.save,也没有保存属性

我正在运行这个函数,我知道它被调用因为redirect_to正在运行。 但由于某种原因,@ user不是! 如果它有帮助,@ user是基于设计的。

def make_feed_preference @user = current_user #@user.feed_preference = params[:preference] @user.feed_preference = "time" @user.name = "Shoo Nabarrr" @user.karma = 666 @user.save redirect_to '/posts' 

结束

我自己修好了。 我必须创建一个附加到用户的新类,以使其工作。 大声笑。

你对这个用户有任何validation吗? 他们可能会阻止这种save 。 无论save是否通过,都将调用redirect_to

我建议这样做:

 if @user.save redirect_to '/posts' else render :feed_preference end 

其中:feed_preference是用户输入其Feed偏好的表单。

在某些情况下,我希望确保更新记录上的标志或其他字段,即使记录有validation问题。 (但是,对于未经validation的用户输入,我永远不会这样做。)你可以这样做:

 def make_feed_preference case params[:preference] when 'time', 'trending_value', 'followers' current_user.update_attribute 'feed_preference', params[:preference] flash[:notice] = 'Your feed preference has been updated.' else flash[:notice] = 'Unknown feed preference.' end redirect_to '/posts' end