It seems as though there is currently no way to enumerate required
attributes in a model. This functionality could be quite nice for
seeing which fields are mandatory in a form. Would this be of interest
to anyone?
Here is a quick overview:
# schema.rb
create_table "people", :force => true do |t|
t.string "first_name"
t.string "last_name"
t.integer "age"
end
# person.rb
class Person < ActiveRecord::Base
validates_presence_of :first_name, :last_name
end
Person.required_attributes
# => [:first_name, :last_name]
# CSS Styles
.mandatory_field {
background-color: red;
}
.form_field {
background-color: grey;
}
# people_helper.rb
module PeopleHelper
def css_class(field_name)
Person.required_attributes.include?(fieldname) ?
''mandatory_field'' : ''form_field''
end
end
# new / edit.html.erb
<%= form_for(@person) do |f| %>
<div class = "<%= css_class(:first_name) %>">
<%= f.text_field :first_name %>
</div>
<% end %>
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Core" group.
To post to this group, send email to rubyonrails-core@googlegroups.com
To unsubscribe from this group, send email to
rubyonrails-core+unsubscribe@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/rubyonrails-core?hl=en
-~----------~----~----~----~------~----~------~--~---
On Sat, Aug 2, 2008 at 11:40 AM, Matt Darby <matt@matt-darby.com> wrote:> It seems as though there is currently no way to enumerate required > attributes in a model. This functionality could be quite nice for seeing > which fields are mandatory in a form. Would this be of interest to anyone? >+1. Looks like a good way to eliminate the hassle of all those little red asteriks. -- Tim --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Core" group. To post to this group, send email to rubyonrails-core@googlegroups.com To unsubscribe from this group, send email to rubyonrails-core+unsubscribe@googlegroups.com For more options, visit this group at http://groups.google.com/group/rubyonrails-core?hl=en -~----------~----~----~----~------~----~------~--~---
On Aug 2, 2008, at 12:39 PM, Tim Gossett wrote:> +1. Looks like a good way to eliminate the hassle of all those > little red asteriks.I''ve submitted a patch to Lighthouse on this subject: http://rails.lighthouseapp.com/projects/8994-ruby-on-rails/tickets/750-patch-activerecord-required_attributes Please show some +1 love if this is helpful to you! Thanks! Matt Darby, M.S. Rails | PHP | Linux | MySQL | IT Email: matt@matt-darby.com Skype: matt-darby Web: http://blog.matt-darby.com --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Core" group. To post to this group, send email to rubyonrails-core@googlegroups.com To unsubscribe from this group, send email to rubyonrails-core+unsubscribe@googlegroups.com For more options, visit this group at http://groups.google.com/group/rubyonrails-core?hl=en -~----------~----~----~----~------~----~------~--~---
Couldn''t the same thing be accomplished by doing the following?
# person.rb
class Person < ActiveRecord::Base
REQUIRED_ATTRS = %w(first_name last_name)
validates_presence_of REQUIRED_ATTRS
end
# people_helper.rb
module PeopleHelper
def css_class(field_name)
Person::REQUIRED_ATTRS.include?(fieldname) ?
''mandatory_field'' :
''form_field''
end
end
On Sun, Aug 3, 2008 at 8:57 AM, Matt Darby <matt@matt-darby.com>
wrote:> On Aug 2, 2008, at 12:39 PM, Tim Gossett wrote:
>
> +1. Looks like a good way to eliminate the hassle of all those little red
> asteriks.
>
> I''ve submitted a patch to Lighthouse on this subject:
>
http://rails.lighthouseapp.com/projects/8994-ruby-on-rails/tickets/750-patch-activerecord-required_attributes
> Please show some +1 love if this is helpful to you!
>
>
>
> Thanks!
> Matt Darby, M.S.
> Rails | PHP | Linux | MySQL | IT
> Email: matt@matt-darby.com
> Skype: matt-darby
> Web: http://blog.matt-darby.com
>
> >
>
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Core" group.
To post to this group, send email to rubyonrails-core@googlegroups.com
To unsubscribe from this group, send email to
rubyonrails-core+unsubscribe@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/rubyonrails-core?hl=en
-~----------~----~----~----~------~----~------~--~---
> +1. Looks like a good way to eliminate the hassle of all those little red > asteriks. > > I''ve submitted a patch to Lighthouse on this subject: > http://rails.lighthouseapp.com/projects/8994-ruby-on-rails/tickets/750-patch-activerecord-required_attributes > Please show some +1 love if this is helpful to you!We also had a thread earlier from Ruy Asan ( http://groups.google.com/group/rubyonrails-core/browse_thread/thread/4cce3966cd61f278/dc000651f75a575a?lnk=gst ) about reimplementing the internals of the validation code to make stuff like this *much* easier. I''m not sure if Ruy and Rick have started investigating merging that stuff, but rather than patch in this kind of behaviour it''d be nice to get it for ''free'' when we make a design improvement. -- Cheers Koz --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Core" group. To post to this group, send email to rubyonrails-core@googlegroups.com To unsubscribe from this group, send email to rubyonrails-core+unsubscribe@googlegroups.com For more options, visit this group at http://groups.google.com/group/rubyonrails-core?hl=en -~----------~----~----~----~------~----~------~--~---
I made a patch that solves this problem in a more elegant and useful
way.
http://rails.lighthouseapp.com/projects/8994-ruby-on-rails/tickets/750-patch-activerecord-required_attributes
(2nd Patch)
Usage:
class Person < ActiveRecord::Base
validates_uniqueness_of :name
validates_presence_of :name, :city
end
Person.validations
=> {:uniqueness => [:name], :presence => [:name, :city]}
As far as the branches that are reworking validations- they seem to be
dead. I''d be all for helping out, if there''s still an impetus
behind
merging in the branches at some point in time.
On Aug 3, 3:23 pm, "Michael Koziarski" <mich...@koziarski.com>
wrote:> > +1. Looks like a good way to eliminate the hassle of all those little
red
> > asteriks.
>
> > I''ve submitted a patch to Lighthouse on this subject:
>
>http://rails.lighthouseapp.com/projects/8994-ruby-on-rails/tickets/75...
> > Please show some +1 love if this is helpful to you!
>
> We also had a thread earlier from Ruy Asan
(http://groups.google.com/group/rubyonrails-core/browse_thread/thread/...
> ) about reimplementing the internals of the validation code to make
> stuff like this *much* easier. I''m not sure if Ruy and Rick have
> started investigating merging that stuff, but rather than patch in
> this kind of behaviour it''d be nice to get it for
''free'' when we make
> a design improvement.
>
> --
> Cheers
>
> Koz
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Core" group.
To post to this group, send email to rubyonrails-core@googlegroups.com
To unsubscribe from this group, send email to
rubyonrails-core+unsubscribe@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/rubyonrails-core?hl=en
-~----------~----~----~----~------~----~------~--~---
I added some comments to Erik Peterson last patch on Lighthouse. It
would be nice if more people help with the discussion:
Wouldn''t be nice with validations also store the options sent?
class Person < ActiveRecord::Base
validates_presence_of :name, :city
validates_length_of :name, :within => 3..20,
end
Person.validations
=> {:presence => { :name => {}, :city => {} }, :length => {
:name =>
{ :within => 3..20 } }}
I think it would be even more readable if it is "attribute oriented":
Person.validations
=> {:name => { :presence => {}, :length => { :within =>
3..20 } }, :city => { :presence => {} }}
Why? This would DRY javascript code generation from our models
completely.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Core" group.
To post to this group, send email to rubyonrails-core@googlegroups.com
To unsubscribe from this group, send email to
rubyonrails-core+unsubscribe@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/rubyonrails-core?hl=en
-~----------~----~----~----~------~----~------~--~---
On E, 2008-08-04 at 11:23 -0700, Erik Peterson wrote:> As far as the branches that are reworking validations- they seem to be > dead. I''d be all for helping out, if there''s still an impetus behind > merging in the branches at some point in time.Actually the main validations rework is happening in active_model [1] with the hope that one day activerecord could make use of active_model, perhaps also using active_relation [2] for the sql generation. [1] http://github.com/rubyruy/rails/tree/active_model_validations [2] git://github.com/nkallen/arel.git> > On Aug 3, 3:23 pm, "Michael Koziarski" <mich...@koziarski.com> wrote: > > > +1. Looks like a good way to eliminate the hassle of all those little red > > > asteriks. > > > > > I''ve submitted a patch to Lighthouse on this subject: > > >http://rails.lighthouseapp.com/projects/8994-ruby-on-rails/tickets/75... > > > Please show some +1 love if this is helpful to you! > > > > We also had a thread earlier from Ruy Asan (http://groups.google.com/group/rubyonrails-core/browse_thread/thread/... > > ) about reimplementing the internals of the validation code to make > > stuff like this *much* easier. I''m not sure if Ruy and Rick have > > started investigating merging that stuff, but rather than patch in > > this kind of behaviour it''d be nice to get it for ''free'' when we make > > a design improvement. > > > > -- > > Cheers > > > > Koz > >--~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Core" group. To post to this group, send email to rubyonrails-core@googlegroups.com To unsubscribe from this group, send email to rubyonrails-core+unsubscribe@googlegroups.com For more options, visit this group at http://groups.google.com/group/rubyonrails-core?hl=en -~----------~----~----~----~------~----~------~--~---
On Mon, Aug 4, 2008 at 8:23 PM, Erik Peterson <erik@subwindow.com> wrote:> > I made a patch that solves this problem in a more elegant and useful > way. > > http://rails.lighthouseapp.com/projects/8994-ruby-on-rails/tickets/750-patch-activerecord-required_attributes > (2nd Patch) > > Usage: > class Person < ActiveRecord::Base > validates_uniqueness_of :name > validates_presence_of :name, :city > end > > Person.validations > => {:uniqueness => [:name], :presence => [:name, :city]}This is nice, but I think it''d be good to do this with some classes rather than hashes. Have a look at ruy asan''s branch for some ideas but something like having a set of Validation objects associated with the model class would be nice. Then you can make the set itself ducktype a little more like you''ve mentioned above. Person.validations[:uniqueness] => [ValidationObjectForName] Person.validations[:presence] => [ValidationObjectForName, ValidationObjectForCity] We can then, at a later date, move the callback chains to introspect those validation instances rather than just generating code at runtime.> As far as the branches that are reworking validations- they seem to be > dead. I''d be all for helping out, if there''s still an impetus behind > merging in the branches at some point in time.The branches in particular aren''t that important, it''s more important that there are people thinking about the issues to fix. If the initial authors have lost interest or don''t have time, you should either reinvigorate that branch or take the ideas / patches into your own branch and get that ready for review :)> > On Aug 3, 3:23 pm, "Michael Koziarski" <mich...@koziarski.com> wrote: >> > +1. Looks like a good way to eliminate the hassle of all those little red >> > asteriks. >> >> > I''ve submitted a patch to Lighthouse on this subject: >> >http://rails.lighthouseapp.com/projects/8994-ruby-on-rails/tickets/75... >> > Please show some +1 love if this is helpful to you! >> >> We also had a thread earlier from Ruy Asan (http://groups.google.com/group/rubyonrails-core/browse_thread/thread/... >> ) about reimplementing the internals of the validation code to make >> stuff like this *much* easier. I''m not sure if Ruy and Rick have >> started investigating merging that stuff, but rather than patch in >> this kind of behaviour it''d be nice to get it for ''free'' when we make >> a design improvement. >> >> -- >> Cheers >> >> Koz > > >-- Cheers Koz --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Core" group. To post to this group, send email to rubyonrails-core@googlegroups.com To unsubscribe from this group, send email to rubyonrails-core+unsubscribe@googlegroups.com For more options, visit this group at http://groups.google.com/group/rubyonrails-core?hl=en -~----------~----~----~----~------~----~------~--~---