实际是在工作过程中假公济私的一个即兴滥涂。
在2.3.5里通过了,其他版本就不知道了。
在2.3.5里通过了,其他版本就不知道了。
module StubActiveRecord
class Base
def save
return valid?
end
def save!;end
def new_record?;false;end
def update_attribute;end
def self.human_name;"#{self.name.underscore}";end
def self.human_attribute_name(col)
"#{self.name.underscore}.#{col}"
end
def self.self_and_descendants_from_active_record;[self];end
#stub methods above
include ActiveRecord::Validations
def initialize(params={})
@errors = ActiveRecord::Errors.new(self)
end
end
end
require 'stub_active_record/base'
class UserRemote < StubActiveRecord::Base
NECESSARY_ATTR = [:name]
attr_accessor *NECESSARY_ATTR
validates_presence_of *NECESSARY_ATTR
validate :validate_via_api
def initialize(params={})
super
NECESSARY_ATTR.each do|attr|
instance_variable_set(:"@#{attr}", params[attr])
end
end
protected
def validate_via_api
# add other errors here.
end
end
class UsersController < ApplicationController
def new
@user = UserRemote.new
end
def create
@user = UserRemote.new(params[:user_remote])
if @user.save
#blablabla
else
render :action => 'new'
end
end
end
<% form_for @user do |form| %>
<%= form.error_messages %>
<%= form.text_field :name %>
<% end %>