Yeah, you're right. Makes perfect sense. I really like the approach.
On May 22, 2013, at 1:13 AM, Caleb Thompson <[email protected]> wrote: > I don't think that multiple scopes would add any real value. Scopes can > themselves be chains of scopes: > > def recent > visible.where('created_at >= ?' Time.now) > end > > On Tuesday, May 21, 2013 8:03:21 PM UTC-4, Zamith wrote: > Love the idea! > > It clearly separates the concerns of the two models. > > One thing though, would it be interesting for the scope to take and array of > scopes? > > > On May 21, 2013, at 11:41 PM, Caleb Thompson <[email protected]> wrote: > >> I'm considering implementing a feature by which a collection >> association might limit the results. >> >> By default, a collection association returns all values where the >> foreign key on the `belongs_to` or `has_and_belongs_to` model matches >> the parent object's primary key. These results can be filtered using the >> `conditions` option, but that requires that other models have knowledge >> of the parent model's table structure. >> >> The feature I'm proposing is to add a `scope` option to collection >> associations which takes a symbol representing a scope (or class mehtod) >> defined on the associated model class. >> >> A basic example would look like this: >> >> class Comment >> belongs_to :post >> >> def self.visible >> where(deleted_at: nil) >> end >> end >> >> class Post >> has_many :posts, scope: :visible >> end >> >> In the above example, `post.comments` would return `Comment` instances >> whose `post_id = post.id` and whose `deleted_at = NULL`, providing basic >> soft-deletion functionality. >> >> While the same effect could be achieved with a declaration such as >> `has_many :posts, conditions: ['deleted_at = ?', nil]`, that betrays >> knowledge of the implementation of deletion on `Post` and would break if >> the implementation were changed to a boolean value for deletion rather >> than a timestamp field. >> >> If I were to work on adding this functionality into ActiveRecord, is it >> something that core might entertain merging? >> >> Thank you, >> >> Caleb Thompson >> >> >> -- >> You received this message because you are subscribed to the Google Groups >> "Ruby on Rails: Core" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected]. >> To post to this group, send email to [email protected]. >> Visit this group at http://groups.google.com/group/rubyonrails-core?hl=en. >> For more options, visit https://groups.google.com/groups/opt_out. >> >> > > Cumprimentos, > Luís Ferreira > > > > > -- > You received this message because you are subscribed to the Google Groups > "Ruby on Rails: Core" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To post to this group, send email to [email protected]. > Visit this group at http://groups.google.com/group/rubyonrails-core?hl=en. > For more options, visit https://groups.google.com/groups/opt_out. > > Cumprimentos, Luís Ferreira -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Core" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/rubyonrails-core?hl=en. For more options, visit https://groups.google.com/groups/opt_out.
