2016-04-15 7 views
2

名前、名、通り、都市など、ユーザーがデータベース内のすべての個人情報を入力した場合にのみ表示したいという情報がレール表示にあります。私は今、これを行うことができます:railsフォームが完全に記入されたかどうかを確認します

if user.name && user.firstname && user.street && user.street 
# show stuff 
end 

が、私はそれは非常にエレガントで「レールウェイ」だとは思いません。これを行うより簡単でスマートな方法はありますか?

答えて

3

requiredは、htmlフォームのタグとモデルクラスの検証で使用できます。また、リンクをたどる: http://guides.rubyonrails.org/active_record_validations.html http://www.w3schools.com/tags/att_input_required.asp

モデル

class User < ActiveRecord::Base 
    def has_required_fields? 
    self.name && self.first_name && self.address && .... 
    end 
end 

でそして、あなたのコントローラ

if user.has_required_fields? 
    # do whatever you want 
end 
+0

ありませんが見えます。私は、フォームから独立して情報をフィルタリングしたい。 – DonMB

+0

私は更新の答えを持っています。今すぐチェックしてください。 –

0

に "道レール" シンコントローラ、脂肪のモデルになります。したがって、あなたの場合は、Userモデルの中にメソッドを作成し、後でそれをコントローラで使用することをお勧めします。

Userモデル

def incomplete? 
    name.blank? or firstname.blank? or street.blank? 
end 

ユーザコントローラ:モデルで

unless user.incomplete? 
    # Show stuff 
end 
0

:あなたのコントローラで

ALL_REQUIRED_FIELDS = %w(name surname address email) 

def filled_required_fields? 
    ALL_REQUIRED_FIELDS.all? { |field| self.attribute_present? field } 
end 

@user.filled_required_fields? 

は、すべてのフィールドが満たされている場合はtrueを、そうでない場合はfalseを返します。

は非常に優雅に私が何をしたいのかではありません:)

関連する問題