Iván Vega Rivera
2006-Jan-04 23:50 UTC
[Rails] Creating a model that acts as a settings manager
Hi, I was wondering how could you create a model that is tied to all the records in one table, and retrieves the values of all records on first load, and also handles the updating of its values. For example, suppose I have this table: id INT(11) PK group CHAR(40) name CHAR(40) value CHAR(128) updated_at DATETIME Sample rows: group name value --------------------------- main something 123 users expire 45 Then, I''d like very much to do something like this in Rails: Settings.main.something = 34 a = Settings.users.expire And also being able to override default behaviors, because maybe I''d want to do something special each time a specific setting is changed. Currently, I''m just defining a method for each setting, but I keep thinking there must be a better way. Thanks in advance! - Ivan V.
i might suggest using the magic ''type'' column instead of group id int PK name varchar(40) type varchar(40) #magic column value varchar(40) class Setting < AR::Base end class MainSetting < Setting end class UserSetting < Setting end class SomeOtherSetting < Setting end # and so on for all your setting types a = MainSetting.create(:name => "something", "value" => "34") b = UserSetting.find_by_name("expire") # a.value = 45 I''m not saying what you want to do can or cannot be done, I just think it would be more work than just doing it the ''Rails Way'' Chris On 1/4/06, Iv?n Vega Rivera <ivanvega@gmail.com> wrote:> > Hi, > > I was wondering how could you create a model that is tied to all the > records in one table, and retrieves the values of all records on first > load, and also handles the updating of its values. > > For example, suppose I have this table: > > id INT(11) PK > group CHAR(40) > name CHAR(40) > value CHAR(128) > updated_at DATETIME > > Sample rows: > group name value > --------------------------- > main something 123 > users expire 45 > > Then, I''d like very much to do something like this in Rails: > > Settings.main.something = 34 > a = Settings.users.expire > > And also being able to override default behaviors, because maybe I''d > want to do something special each time a specific setting is changed. > > Currently, I''m just defining a method for each setting, but I keep > thinking there must be a better way. > > Thanks in advance! > > - Ivan V. > > _______________________________________________ > Rails mailing list > Rails@lists.rubyonrails.org > http://lists.rubyonrails.org/mailman/listinfo/rails >-------------- next part -------------- An HTML attachment was scrubbed... URL: http://wrath.rubyonrails.org/pipermail/rails/attachments/20060105/93c39a7d/attachment-0001.html
Iván Vega Rivera
2006-Jan-06 01:02 UTC
[Rails] Creating a model that acts as a settings manager
Thanks for your insight, I think I''ll go with it. Ivan V. Chris Hall wrote:> i might suggest using the magic ''type'' column instead of group > > id int PK > name varchar(40) > type varchar(40) #magic column > value varchar(40) > > class Setting < AR::Base > end > > class MainSetting < Setting > end > > class UserSetting < Setting > end > > class SomeOtherSetting < Setting > end > > # and so on for all your setting types > > a = MainSetting.create(:name => "something", "value" => "34") > b = UserSetting.find_by_name("expire") # a.value = 45 > > I''m not saying what you want to do can or cannot be done, I just think > it would be more work than just doing it the ''Rails Way'' > > Chris > > On 1/4/06, *Iv?n Vega Rivera* <ivanvega@gmail.com > <mailto:ivanvega@gmail.com>> wrote: > > Hi, > > I was wondering how could you create a model that is tied to all the > records in one table, and retrieves the values of all records on first > load, and also handles the updating of its values. > > For example, suppose I have this table: > > id INT(11) PK > group CHAR(40) > name CHAR(40) > value CHAR(128) > updated_at DATETIME > > Sample rows: > group name value > --------------------------- > main something 123 > users expire 45 > > Then, I''d like very much to do something like this in Rails: > > Settings.main.something = 34 > a = Settings.users.expire > > And also being able to override default behaviors, because maybe I''d > want to do something special each time a specific setting is changed. > > Currently, I''m just defining a method for each setting, but I keep > thinking there must be a better way. > > Thanks in advance! > > - Ivan V. > > _______________________________________________ > Rails mailing list > Rails@lists.rubyonrails.org <mailto:Rails@lists.rubyonrails.org> > http://lists.rubyonrails.org/mailman/listinfo/rails > > > ------------------------------------------------------------------------ > > _______________________________________________ > Rails mailing list > Rails@lists.rubyonrails.org > http://lists.rubyonrails.org/mailman/listinfo/rails >
Possibly Parallel Threads
- "Selecting" a calculated row / Using :select in the paginate method
- Help with SCGI please :(
- Stories with many tags, tags with many stories, has_and_belongs_to_many howto?
- Using :include "recursively" (including the children of the child)?
- Eager Loading a Relationship That Has No PK/FK