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.

Reply via email to