On 28 June 2015 at 03:51, Elizabeth McGurty <emcgur...@gmail.com> wrote: > Just gave this a quick look... > What strikes me as odd is this in your User validation: > validates :name, presence: true, length: { maximum: 50 },uniqueness: { > case_sensitive: false } > You want the user name unique yet you do not care about case sensitivity? > CAT, cat, Cat, caT....
I guess the OP means that if there already is a use CAT then he does not want to allow another user to be called cat. Not an unreasonable idea I think. > And then you query for: SELECT 1 AS one FROM "users" WHERE > LOWER("users"."name") = LOWER('fsdfsdf') LIMIT... That doesn't make sense to > me... > This strikes me as bad form. Make name case_sensitive: true. And in your > SQL, remove LOWER. The LOWER is used by rails enforce the case insensitivity, it is not something the OP has done explicitly. Colin > > On Friday, June 26, 2015 at 12:49:18 PM UTC-4, Ruby-Forum.com User wrote: >> >> please help correct test. >> >> its a model User: >> class User < ActiveRecord::Base >> before_save { self.email = email.downcase } >> before_create :create_remember_token >> >> VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i >> validates :email, presence: true, >> format: { with: >> VALID_EMAIL_REGEX }, >> uniqueness: { case_sensitive: >> false } >> validates :diary_name, presence: true, uniqueness: { case_sensitive: >> false } >> validates :password, length: { minimum: 6 } >> validates :name, presence: true, length: { maximum: 50 }, >> uniqueness: { case_sensitive: false } >> >> has_secure_password >> >> has_many :recalls >> has_many :posts, dependent: :destroy >> belongs_to :gender >> >> has_attached_file :avatar, :styles => { :large => "300x300>", :medium >> => "100x100>", :thumb => "30x30>" } >> validates_attachment_content_type :avatar, :content_type => >> ["image/jpg", "image/jpeg", "image/png", "image/gif"] >> validates_attachment_file_name :avatar, :matches => [/png\Z/, >> /jpe?g\Z/, /gif\Z/] >> end >> >> its a controller UserController: >> class UsersController < ApplicationController >> def new >> @user = User.new >> end >> >> def create >> @user = User.new(user_params) >> >> if @user.save >> sign_in @user >> flash[:success] = "Welcome to the Sample App!" >> redirect_to @user >> else >> flash.now[:error] = 'Invalid data' >> render 'new' >> end >> end >> >> private >> >> def user_params >> params.require(:user).permit(:name, :email, :diary_name, >> :password, :gender_id, :password_confirmation, :phone, :skype, :info, >> :avatar, :delete_avatar) >> end >> end >> >> its a fixture user: >> one: >> name: 'onfge' >> email: 'mystr...@ad.ad' >> password_digest: >> '$2a$10$XS2HLwMZxg/7yRKAWd9AJ.afCMra0wGWK4b.FhkY/qo3Lmo/tKEiO' >> remember_token: 'dc3461e13c8d316dad22332a503e06edafa0b9cb' >> phone: '43535345' >> skype: 'gggggg' >> gender: one >> info: 'MyString' >> admin: true >> avatar_file_name: nil >> avatar_content_type: nil >> avatar_file_size: nil >> >> its a fixture genders: >> one: >> gender_name: '-' >> >> two: >> gender_name: 'male' >> >> three: >> gender_name: 'female' >> >> >> a test that does not work: >> class UsersControllerTest < ActionController::TestCase >> fixtures :users >> >> setup do >> @user = users(:one) >> @input_attributes = { >> email: 'yhy...@ad.ad', >> gender_id: 1, >> info: 'u76u67u67u', >> name: 'fsdfsdf', >> password: 'qwerty', >> password_confirmation: 'qwerty', >> phone: '435345345', >> skype: 'sdggdfgdfgfdgd' >> } >> end >> >> test "should create user" do >> assert_difference('User.count') do >> post :create, >> user: @input_attributes >> end >> end >> end >> >> >> after a test run in the console I get the following error message: >> 1) Failure: >> UsersControllerTest#test_should_create_user >> [/home/kalinin/rails/ZSUM/test/controllers/users_controller_test.rb:37]: >> "User.count" didn't change by 1. >> Expected: 3 >> Actual: 2 >> >> >> It is the message that is logged. it is clear that the transaction is >> rolled back for some strange reason: >> [1m[35mUser Load (0.1ms)[0m SELECT "users".* FROM "users" WHERE >> "users"."id" = ? LIMIT 1 [["id", 980190962]] >> [1m[36m (0.1ms)[0m [1mSELECT COUNT(*) FROM "users"[0m >> Processing by UsersController#create as HTML >> Parameters: {"user"=>{"email"=>"yhy...@ad.ad", "gender_id"=>"1", >> "info"=>"u76u67u67u", "name"=>"fsdfsdf", "password"=>"[FILTERED]", >> "password_confirmation"=>"[FILTERED]", "phone"=>"435345345", >> "skype"=>"sdggdfgdfgfdgd"}} >> [1m[35m (0.1ms)[0m SAVEPOINT active_record_1 >> [1m[36mUser Exists (0.1ms)[0m [1mSELECT 1 AS one FROM "users" WHERE >> LOWER("users"."email") = LOWER('yhy...@ad.ad') LIMIT 1[0m >> [1m[35mUser Exists (0.1ms)[0m SELECT 1 AS one FROM "users" WHERE >> "users"."diary_name" IS NULL LIMIT 1 >> [1m[36mUser Exists (0.1ms)[0m [1mSELECT 1 AS one FROM "users" WHERE >> LOWER("users"."name") = LOWER('fsdfsdf') LIMIT 1[0m >> [1m[35m (0.1ms)[0m ROLLBACK TO SAVEPOINT active_record_1 >> >> -- >> Posted via http://www.ruby-forum.com/. > > -- > You received this message because you are subscribed to the Google Groups > "Ruby on Rails: Talk" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to rubyonrails-talk+unsubscr...@googlegroups.com. > To post to this group, send email to rubyonrails-talk@googlegroups.com. > To view this discussion on the web visit > https://groups.google.com/d/msgid/rubyonrails-talk/bc9f8148-023e-45fe-bbe6-576c930b0fb6%40googlegroups.com. > > For more options, visit https://groups.google.com/d/optout. -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To unsubscribe from this group and stop receiving emails from it, send an email to rubyonrails-talk+unsubscr...@googlegroups.com. To post to this group, send email to rubyonrails-talk@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/rubyonrails-talk/CAL%3D0gLs_TkJas9ScX-ACTfdgupoy87WBDPReTekrnMTg2%3Dbzfw%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.