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