Rails:列に値があるかどうかを確認するにはどうすればよいですか。 -- ruby-on-rails フィールド と ruby フィールド と database フィールド と ruby-on-rails-3 フィールド と ruby-on-rails-4 フィールド 関連 問題

Rails: How do I check if a column has a value?












13
vote

問題

日本語

これをどのように達成することができますか?

<事前> <コード> <% for agent in @broker.agents %> ... <% if agent.cell %><span class="cell-number">Cell: <%= agent.cell %></span><% end %> ... <% end %>

エージェントがセル番号を持つかどうかをテストしたいです。そうすれば、条件付きの内側にあるものを表示します。私が現在仕事をしていないことはありません。 「セル:」を表示します。

思考?

英語

How can I accomplish this?

<% for agent in @broker.agents %>   ...   <% if agent.cell %><span class="cell-number">Cell: <%= agent.cell %></span><% end %>   ... <% end %> 

I want to test to see if the agent has a cell number, and if so, display what's inside the conditional. What I have currently doesn't seem to work; it just displays "Cell: ".

Thoughts?

</div
              

回答リスト

14
 
vote
vote
ベストアンサー
 

これはあなたが尋ねたものです:

 <コード> J74  

セル?メソッドは、セルがNILか空の文字列かを処理します。 RailsはすべてのActiveRecord属性に対して類似の機能を追加します。これは少しニカワーを見るでしょう:

<事前> <コード> J75

疑問符とコロンは「if?それでは:else」ステートメントを迅速に形成します。メソッド名セルの一部であるため、上記のコードには2つの疑問符がありますか?そしてもう一つはIF / IN / ELSE構造の一部です。

 

This is what you asked for:

<% for agent in @broker.agents %>   <% unless agent.cell.blank? %>     <span class="cell-number">Cell: <%= agent.cell %></span>   <% end %> <% end %> 

The cell? method works whether cell is nil or an empty string. Rails adds similar functions for all ActiveRecord attributes. This will look a little nicer:

<% for agent in @broker.agents %>   <span class="cell-number">     Cell: <%= agent.cell? ? "none given" : agent.cell %>   </span> <% end %> 

The question mark and colon form a quick "if ? then : else" statement. There are two question marks in the code above because one is part of the method name cell? and the other is a part of the if/then/else construction.

</div
 
 
 
 
13
 
vote

この質問に対する非常に詳細な答えを与えています「列に値があるかどうかを確認する方法は? "。

まず、属性には4種類の値を持つことができることに注意することが重要です。

  1. nil 値i.eデータベースに格納されている "nil"
  2. 空の値i.e "" スペースのない空の文字列
  3. 空の文字列スペース ""。
  4. 値データベースに存在する値i.e 空の文字列
  5. これは、この場合に使用できるすべての方法(Ruby 2.2.2)の詳細な動作です。

    最初の方法: <コード> .empty?

      nil 値= gtの場合
    1. 例外

      をスローします <事前> <コード> 2.2.2 :037 > object.attribute => nil 2.2.2 :025 > object.attribute.empty? NoMethodError: undefined method `empty?' for nil:NilClass
    2. 空の値i.e "" スペースのない空の文字列 <事前> <コード> 2.2.2 :037 > object.attribute => "" 2.2.2 :025 > object.attribute.empty? true
    3. 文字列スペース ""。

      <事前> <コード> 2.2.2 :049 > object.attribute => nil 2.2.2 :050 > object.attribute.nil? => true 3
    4. データベースに存在する値i.e 空の文字列

      <事前> <コード> 2.2.2 :045 > object.attribute => "some value" 2.2.2 :046 > object.attribute.empty? => false
    5. 2番目の方法: <コード> .nil?

      1. nil 値i.eデータベースに格納されている "nil"

        <事前> <コード> 2.2.2 :049 > object.attribute => nil 2.2.2 :050 > object.attribute.nil? => true 6
      2. 空の値i.e "" スペースのない空の文字列

        <事前> <コード> 9988777667
      3. 文字列スペース ""。

        <事前> <コード> 2.2.2 :057 > object.attribute => " " 2.2.2 :058 > object.attribute.nil? => false
      4. データベースに存在する値i.e 空の文字列

        <事前> <コード> 2.2.2 :061 > object.attribute => "some value" 2.2.2 :062 > object.attribute.nil? => false
      5. 3番目の方法: <コード> 2.2.2 :037 > object.attribute => nil 2.2.2 :025 > object.attribute.empty? NoMethodError: undefined method `empty?' for nil:NilClass 0

        1. nil 値i.eデータベースに格納されている "nil"

          <事前> <コード> 2.2.2 :037 > object.attribute => nil 2.2.2 :025 > object.attribute.empty? NoMethodError: undefined method `empty?' for nil:NilClass 1
        2. 空の値i.e "" スペースのない空の文字列

          <事前> <コード> 2.2.2 :037 > object.attribute => nil 2.2.2 :025 > object.attribute.empty? NoMethodError: undefined method `empty?' for nil:NilClass 2
        3. 文字列スペース ""。

          <事前> <コード> 2.2.2 :037 > object.attribute => nil 2.2.2 :025 > object.attribute.empty? NoMethodError: undefined method `empty?' for nil:NilClass 3
        4. データベースに存在する値i.e 空の文字列

          <事前> <コード> 2.2.2 :037 > object.attribute => nil 2.2.2 :025 > object.attribute.empty? NoMethodError: undefined method `empty?' for nil:NilClass 4
        5. 4番目の方法: <コード> 2.2.2 :037 > object.attribute => nil 2.2.2 :025 > object.attribute.empty? NoMethodError: undefined method `empty?' for nil:NilClass 5

          1. nil 値i.eデータベースに格納されている "nil"

            <事前> <コード> 2.2.2 :049 > object.attribute => nil 2.2.2 :050 > object.attribute.nil? => true 16
          2. 空の値i.e "" スペースのない空の文字列

            <事前> <コード> 2.2.2 :037 > object.attribute => nil 2.2.2 :025 > object.attribute.empty? NoMethodError: undefined method `empty?' for nil:NilClass 7
          3. 文字列スペース ""。

            <事前> <コード> 2.2.2 :037 > object.attribute => nil 2.2.2 :025 > object.attribute.empty? NoMethodError: undefined method `empty?' for nil:NilClass 8
          4. データベースに存在する値i.e 空の文字列

             <コード> 2.2.2 :037 > object.attribute => nil 2.2.2 :025 > object.attribute.empty? NoMethodError: undefined method `empty?' for nil:NilClass 9  
          5. あなたが直面する状況に応じて4つのどちらかを使うことができます。

            ありがとう

 

I am giving a very detailed answer to this Question "How do I check if a column has a value?".

First of all, it is important to note that an attribute can have four kinds of values in it.

  1. nil value i.e "nil" stored in the database
  2. empty value i.e "" an empty string with no spaces
  3. empty string with spaces " ".
  4. value present in database i.e a non-empty string.

Here is the detail behavior of all the present methods(Ruby 2.2.2) that could be used in this case.

First Method: .empty?

  1. For nil value => Throws an exception

    2.2.2 :037 > object.attribute => nil 2.2.2 :025 > object.attribute.empty? NoMethodError: undefined method `empty?' for nil:NilClass 
  2. For empty value i.e "" an empty string with no spaces

    2.2.2 :037 > object.attribute => "" 2.2.2 :025 > object.attribute.empty? true 
  3. empty string with spaces " ".

    2.2.2 :041 > object.attribute => " "  2.2.2 :042 > object.attribute.empty? => false 
  4. value present in database i.e a non-empty string.

    2.2.2 :045 > object.attribute  => "some value"  2.2.2 :046 > object.attribute.empty?  => false  

Second Method: .nil?

  1. nil value i.e "nil" stored in the database

    2.2.2 :049 > object.attribute  => nil  2.2.2 :050 > object.attribute.nil?  => true 
  2. empty value i.e "" an empty string with no spaces

    2.2.2 :053 > object.attribute  => ""  2.2.2 :054 > object.attribute.nil?  => false  
  3. empty string with spaces " ".

    2.2.2 :057 > object.attribute  => " "  2.2.2 :058 > object.attribute.nil?  => false  
  4. value present in database i.e a non-empty string.

    2.2.2 :061 > object.attribute  => "some value"  2.2.2 :062 > object.attribute.nil?  => false 

Third Method: .blank?

  1. nil value i.e "nil" stored in the database

    2.2.2 :065 > object.attribute  => nil  2.2.2 :066 > object.attribute.blank?  => true 
  2. empty value i.e "" an empty string with no spaces

    2.2.2 :069 > object.attribute  => ""  2.2.2 :070 > object.attribute.blank?  => true  
  3. empty string with spaces " ".

    2.2.2 :073 > object.attribute  => " "  2.2.2 :074 > object.attribute.blank?  => true  
  4. value present in database i.e a non-empty string.

    2.2.2 :075 > object.attribute  => "some value"  2.2.2 :076 > object.attribute.blank?  => false  

Fourth Method: .present?

  1. nil value i.e "nil" stored in the database

    2.2.2 :088 > object.attribute  => nil  2.2.2 :089 > object.attribute.present?  => false 
  2. empty value i.e "" an empty string with no spaces

    2.2.2 :092 > object.attribute  => ""  2.2.2 :093 > object.attribute.present?  => false 
  3. empty string with spaces " ".

    2.2.2 :096 > object.attribute  => " "  2.2.2 :097 > object.attribute.present?  => false  
  4. value present in database i.e a non-empty string.

    2.2.2 :100 > object.attribute  => "some value"  2.2.2 :101 > object.attribute.present?  => true  

You can use either of the four depending upon the situation you face.

Thanks

</div
 
 
5
 
vote
<事前> <コード> 2.2.2 :037 > object.attribute => "" 2.2.2 :025 > object.attribute.empty? true 0

機能します。

 
if !agent.cell.blank? 

It works.

</div
 
 
     
     
1
 
vote

Agent.Cell? Agent.Cell.Blankと同じ機能がありますか? ror;

 

agent.cell? seems to work the same as agent.cell.blank? in RoR.

</div
 
 
 
 
0
 
vote
<事前> <コード> 2.2.2 :037 > object.attribute => "" 2.2.2 :025 > object.attribute.empty? true 1

#each、 998876622 、および<コード> 2.2.2 :037 > object.attribute => "" 2.2.2 :025 > object.attribute.empty? true 3 の使用は、最初の一目でより読みやすく、理解しやすくなります。

 
<% @broker.agents.each do |agent| %>   ...   <% unless agent.cell.empty? %>     <span class="cell-number">Cell: <%= agent.cell %></span>   <% end %>   ... <% end %> 

I find the use of #each, unless, and cell.empty? to be more readable and easier to understand at first glance.

</div
 
 
0
 
vote

実際に列に何も含まないかどうかを確認できます。 2.2.2 :037 > object.attribute => "" 2.2.2 :025 > object.attribute.empty? true 4 は、列の種類が文字列

の場合はtrueを返します。
 

you can actually check if the column contains nothing by doing Model.column == "" will return true if the column type is string

</div
 
 

関連する質問

0  アプリのさまざまなページから呼び出されたときに、Rails ControllerがさまざまなJavaScriptを実行するようにRails Controllerを取得できますか?  ( How can i get a rails controller to execute different javascript when called fro ) 
私のアプリではsales_opportunitiesがあり、これらは両方のユーザー(どちらのユーザーにそれらを典型的に入力しています)、そして企業(Sales_OpportUnityが販売している方)にも含まれています。各Sales_OpportUnityの詳...

1  レール4 - テストスイートのクエリ制限を打つジオコーダ  ( Rails 4 geocoder hitting query limit in test suite ) 
テストスイートを実行するときは、秒ごとのジオコーディングを打つために赤くなります。 <事前> <コード> Google Geocoding API error: over query limit. Google Maps / Placy APIで...

0  [登録&セッション]未定義方法 `new 'の場合はNil:Nilclass  ( Nomethoderror in devise registrations sessions undefined method new for ni ) 
<事前> <コード> Showing ...views/devise/sessions/new.html.erb where line #3 raised: undefined method `new' for nil:NilClass Extracted ...

2  Rails After_Create関連するオブジェクトを作成します  ( Rails after create make a related object ) 
の のデフォルトカテゴリ>を作成したいと思います。 詳しく <事前> <コード> User has_many :companies Company belongs_to :user has_many :categories ユーザーが...

0  空のオブジェクトを作成し、その属性を何かに設定します  ( Create empty object and set its attribute to something ) 
私は update_models と呼ばれる私のコントローラにアクションを持っています。ここで、 params[:model_id] : @selected_model と呼ばれるインスタンス変数を設定します。 Plain <事前> <コード> def upd...

0  致命的:設定ファイル '/mypath/config/development.sphinx.conf'に索引が見つかりません  ( Fatal no indexes found in config file mypath config development sphinx conf ) 
だから、私は ThinkingSphinx とHerokuアドオン生産中のSphinx を飛んでいます。 しかし、私は以下のエラーを出しているようです <事前> <コード> using config file '/mypath/config/developm...

1  Rails:データベースに格納されている時間識別子を「文字列」として計算します。  ( Rails calculate time using time identifier stored in database as string ) 
このような将来の日付を計算したいと思います: <事前> <コード> Date.today + 1.year Date.today + 1.month 将来の日付が1つの month または1つの year にする必要がある場合は、データベースから year...

0  レール3からのレール4の仮想属性  ( Virtual attributes in rails 4 from rails 3 ) 
Rails 4.10アプリを作成しています、そして私のRails 3.2アプリからコードを使用しています。 このアプリでは、group_idsという仮想属性を追加してから、After_Saveを使用してユーザーにグループを追加します。 私の3.2コードで:...

0  "NewName"メソッドを改善する方法  ( How can i improve my newname method ) 
私は学生で、私はメモを手に入れました(説明なし) 私の次のコードはバグが鳴っており、もっと良いです。 <コード> controller#newname メソッドをどのように改善しますか?あなたの時間をありがとう! <事前> <コード> class Review...

1  Gemfile Rails4なしで画像をアップロードします4  ( Upload image without any gemfile rails4 ) 
Ruby on Railsで新しい。 私はgemfileなしで画像をアップロードしようとしています。私は次の http://guides.rubyonRails.org/form_helpers これは私のobies_controller.rbファイルです...




© 2022 cndgn.com All Rights Reserved. Q&Aハウス 全著作権所有