Ruby on rails Rails API不更新记录
我正在使用rails构建一个API,我的更新方法表现得很奇怪 我使用curl来更新用户,当我在rails服务器终端中查看时,它似乎已经更新了用户,但当我在rails控制台中查找用户时,用户并没有改变 如果我尝试卷曲单个用户记录,也是一样的。它只会改变,如果我卷曲更新3次 以下是我的更新方法:Ruby on rails Rails API不更新记录,ruby-on-rails,ruby,api,Ruby On Rails,Ruby,Api,我正在使用rails构建一个API,我的更新方法表现得很奇怪 我使用curl来更新用户,当我在rails服务器终端中查看时,它似乎已经更新了用户,但当我在rails控制台中查找用户时,用户并没有改变 如果我尝试卷曲单个用户记录,也是一样的。它只会改变,如果我卷曲更新3次 以下是我的更新方法: def update respond_with User.find_by(params[:uid]).update(user_params) end private def user_params
def update
respond_with User.find_by(params[:uid]).update(user_params)
end
private
def user_params
params.require(:user).permit(:username, :uid, :provider, :image_url, :full_name, :colour)
end
我使用的curl命令如下
curl -v -H "Accept: application/json" -H "Content-type: application/json" -X PUT -d '{"username":"Bradley Jamil"}' http://localhost:3000/api/v1/users/81888
这是终端的输出
在我再次运行同一个curl请求2次之前,所讨论的用户不会更改
这里还有我的用户模型
# User Class
class User < ActiveRecord::Base
has_many :friendships
has_many :friends, through: :friendships
has_many :inverse_friendships, class_name: 'Friendship', foreign_key: 'friend_id'
has_many :inverse_friends, through: :inverse_friendships, source: :user
validates :provider, :uid, :username, :image_url, :full_name, :colour, presence: true
validates :uid, uniqueness: true
validates :provider, format: /\A(twitter)\Z/
end
#用户类
类用户
如评论所示,我认为存在验证问题,我不完全确定您是否正在调用save
我会这样做,至少是为了调试
def update
respond_with User.find_by(params[:uid]).assign_attributes(user_params).save!
end
在这里,我们正在进行批量属性更新(在内存中),然后使用save将其刷新到数据库中代码>
您可能知道,保存代码>将返回true
或在失败时引发异常
日志将显示异常,curl将获得400或500级错误,这取决于rails在捕获验证错误和返回正确响应代码方面的魔力。发布curl命令和rails日志。请注意语法和帖子的清晰性。你不想要update\u attributes
而不是update
?我也尝试过使用update\u attributes
而不是update
,结果是一样的。把问题分开一点。抓取用户,查看用户的当前状态放置用户。检查,执行更新,执行另一个放置用户。检查并查看属性是否更改。这将全部输出到终端。此日志与更新不一致。所有这些都是SELECT
sql。对于更新,您应该看到更新
或者插入
。几乎可以肯定,验证失败了。我们必须查看您的用户
模型才能了解发生了什么。