2018年6月29日 星期五

rails model conditional validation 的神奇用法 extend

lol, 沒想過可以這樣

```ruby
user = User.find(id)
user.extend(User::RegistrationContext)
```

```ruby
# app/models/user/registration_context.rb
module User::RegistrationContext
  def self.extended(model)
    class << model
      validates :terms_of_service_accepted, acceptance: true
    end
  end

  attr_accessor :terms_of_service_accepted
end
```

```ruby
user = User.new
user.extend(User::RegistrationContext)
user.terms_of_service_accepted = "0"
user.valid?
=> false
user.errors.messages[:terms_of_service_accepted]
=> ["must be accepted"]
```

哈,雖然應該不會去用這種做法,但還是學習了XD

https://karolgalanciak.com/blog/2018/06/24/rails-and-conditional-validations-in-models/

沒有留言:

張貼留言