diff options
author | Rafael Mendonça França <rafaelmfranca@gmail.com> | 2014-08-17 22:57:21 -0300 |
---|---|---|
committer | Rafael Mendonça França <rafaelmfranca@gmail.com> | 2014-08-17 22:57:21 -0300 |
commit | 76883f92374c6395f13c16628e1d87d40b6d2399 (patch) | |
tree | acb43a57d3601fdd9502599843eab27e8be095ff /railties/lib/rails | |
parent | cdc00aba62ffb0f0af452f5152aafeb5e490962e (diff) | |
parent | fdfc0fc6c91b46a3ff769687e1a456ef2b205417 (diff) | |
download | rails-76883f92374c6395f13c16628e1d87d40b6d2399.tar.gz rails-76883f92374c6395f13c16628e1d87d40b6d2399.tar.bz2 rails-76883f92374c6395f13c16628e1d87d40b6d2399.zip |
Merge pull request #16062 from sgrif/sg-required-generators
Add a `required` option to the model generator
Diffstat (limited to 'railties/lib/rails')
-rw-r--r-- | railties/lib/rails/generators/generated_attribute.rb | 24 |
1 files changed, 20 insertions, 4 deletions
diff --git a/railties/lib/rails/generators/generated_attribute.rb b/railties/lib/rails/generators/generated_attribute.rb index c5326d70d1..f16bd8e082 100644 --- a/railties/lib/rails/generators/generated_attribute.rb +++ b/railties/lib/rails/generators/generated_attribute.rb @@ -44,8 +44,11 @@ module Rails return $1, limit: $2.to_i when /decimal\{(\d+)[,.-](\d+)\}/ return :decimal, precision: $1.to_i, scale: $2.to_i - when /(references|belongs_to)\{polymorphic\}/ - return $1, polymorphic: true + when /(references|belongs_to)\{(.+)\}/ + type = $1 + provided_options = $2.split(/[,.-]/) + options = Hash[provided_options.map { |opt| [opt.to_sym, true] }] + return type, options else return type, {} end @@ -123,7 +126,11 @@ module Rails end def polymorphic? - self.attr_options.has_key?(:polymorphic) + self.attr_options[:polymorphic] + end + + def required? + self.attr_options[:required] end def has_index? @@ -139,12 +146,21 @@ module Rails end def inject_options - "".tap { |s| @attr_options.each { |k,v| s << ", #{k}: #{v.inspect}" } } + "".tap { |s| options_for_migration.each { |k,v| s << ", #{k}: #{v.inspect}" } } end def inject_index_options has_uniq_index? ? ", unique: true" : "" end + + def options_for_migration + @attr_options.dup.tap do |options| + if required? + options.delete(:required) + options[:null] = false + end + end + end end end end |