【发布时间】:2023-03-13 07:02:02
【问题描述】:
我的模型有:
class Link < ActiveRecord::Base
belongs_to :group
validates_presence_of :url_address
validates_presence_of :group_id
before_save :verify_url
acts_as_list
def valid_get?
HTTParty.get(url_address).code.between?(100,399) ? true : false
rescue SocketError, URI::InvalidURIError
false
end
def verify_url
if valid_get?
verified_date = Time.now
end
end
end
当我通过表单创建记录时,verified_date 被正确设置为今天的日期。
为什么字段不更新记录的更新?
控制器:
class LinksController < ApplicationController
before_filter :authorize, :except => [:index, :show, :advanced_search]
...
def verify_link # Used by js. works fine to update the field.
@link = Link.find(params[:id])
if @link.valid_get?
if @link.update_attribute(:verified_date, Time.now)
render nothing: true, status: 200
else
render nothing: true, status: 422
end
else
render nothing: true, status: 422
end
end
def create # Used via the HTML form. method should update verified_date but doesn't
@link = Link.new(params[:link])
@link.content_date = Time.new().strftime("%m/%d/%Y") if @link.content_date.nil?
if @link.valid_get?
@link.verified_date = Time.new()
http_check_msg = 'and the url was verified as valid'
else
http_check_msg = 'however it was *not* possible to visit the url as given currently'
end
respond_to do |format|
if @link.save
flash[:notice] = 'Link was successfully created, ' + http_check_msg
format.html { redirect_to(@link) }
else
flash[:notice] = 'Error, The link was not created.'
@groups = Group.all.collect { |g| [g.group_name, g.id] }
format.html { render :action => "new"}
end
end
end
我有通过上述控制器 verify_link 方法更新该字段的 javascript,但常规表单和随附的更新方法似乎没有更新更新方法中的属性 -
def update
@link = Link.find(params[:id])
respond_to do |format|
if @link.update_attributes(params[:link])
@link.verify_url
@link.save
flash[:notice] = 'Link was successfully updated.'
format.html { redirect_to(@link.group) }
else
@groups = Group.all.collect { |g| [g.group_name, g.id] }
format.html { render :action => "edit" }
end
end
end
【问题讨论】:
-
更新操作运行时您的日志是什么样的?
标签: ruby-on-rails ruby ruby-on-rails-3 rspec