Ben*_*ith 0 ruby validation ruby-on-rails ruby-on-rails-3 ruby-on-rails-4
在我的 Ruby on Rails 应用程序中,我尝试添加验证以确保用户在文本框中输入了一个值。在我的系统中,我有一个名为的表Account,用于存储用户的电子邮件帐户信息,当他们进入views/accounts/_form.html.erb页面添加新的电子邮件帐户时,我想验证是否存在端口号。我可以通过以下代码做到这一点:
validates :port, presence: true
Run Code Online (Sandbox Code Playgroud)
这成功地确保了用户输入了他们的端口号,但是当用户通过views/users/_new.html.erb页面注册时,他们只需要输入一个电子邮件地址(例如 example@example.com),users_controller然后就会在Account表中为这个电子邮件地址创建一个记录。我的问题是在views/accounts/_form.html.erb页面上需要端口号,但在页面上views/users/_new.html.erb不是。
有没有验证用户输入的端口号,如果他们是对的方式views/accounts/_form.html.erb页面或调用create的方法accounts_controller?
我知道我可以通过 HTML 所需的验证来做到这一点,如下所示:<%= f.text_field :port, :required => true %>但我需要添加进一步的验证以及存在,所以这不合适。
您可以创建一个attr_accessor字段来确定是否应该进行验证...
class Account < ActiveRecord:Base
attr_accessor :port_needs_validation
validates :port, presence: true, if: -> {port_needs_validation}
Run Code Online (Sandbox Code Playgroud)
然后只需在您的创建方法中设置访问器...
def create
@account = Account.new
@account.assign_attributes(account_params)
@account.port_needs_validation = true
if @account.save
...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
898 次 |
| 最近记录: |