hey, All my model have a publish, publish_to, publish_from fields. when i fetch records (ex Products) with id > 10, i do it like this: @items = Product.find(:all, :conditions => [''id > ?'', 10] ) now i want to do an extra filter on all my finds (in the frontend) Like this @items = Product.find_publish(:all, :conditions => [''id > ?'', 10] ) which means this exactly: stime = Time.now.utc.strftime(''%Y-%m-%d'') @items = Product.find(:all, :conditions => [''id > ? AND publish = 1 AND (publish_from is null OR publish_from <= ?) AND (publish_to is null OR publish_to >= ?)'',10, stime, stime ]) How can i do this, so that i keep the orginal conditions, and expand it with 3 other condition.... Thx -- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk -~----------~----~----~----~------~----~------~--~---
I think you might be wanting with_scope Product.with_scope(:conditions => ["id < ?", 10]) do stime = Time.now.utc.strfime("%Y-%m-%d") @items = Product.find(:all, :conditions => ["publish = 1 and (publish_from is null or publish_from <= ?) and (publish_to is null or publish_to >= ?)", stime, stime]) end all queries within the block automatically have the defined conditions, ie, they have been scoped. http://api.rubyonrails.org/classes/ActiveRecord/Base.html#M000892 http://habtm.com/articles/2006/02/22/nested-with_scope Chris On 9/5/06, Nick Brutyn <rails-mailing-list-ARtvInVfO7ksV2N9l4h3zg@public.gmane.org> wrote:> > hey, > > All my model have a publish, publish_to, publish_from fields. > > when i fetch records (ex Products) with id > 10, i do it like this: > @items = Product.find(:all, :conditions => [''id > ?'', 10] ) > > now i want to do an extra filter on all my finds (in the frontend) Like > this > > @items = Product.find_publish(:all, :conditions => [''id > ?'', 10] ) > > which means this exactly: > > stime = Time.now.utc.strftime(''%Y-%m-%d'') > @items = Product.find(:all, :conditions => [''id > ? AND publish = 1 AND > (publish_from is null OR publish_from <= ?) AND (publish_to is null OR > publish_to >= ?)'',10, stime, stime ]) > > How can i do this, so that i keep the orginal conditions, and expand it > with 3 other condition.... > > Thx > > -- > Posted via http://www.ruby-forum.com/. > > > >--~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk -~----------~----~----~----~------~----~------~--~---
Chris Hall wrote:> I think you might be wanting with_scope > > Product.with_scope(:conditions => ["id < ?", 10]) do > stime = Time.now.utc.strfime("%Y-%m-%d") > @items = Product.find(:all, :conditions => ["publish = 1 and > (publish_from is null or publish_from <= ?) and (publish_to is null or > publish_to >= ?)", stime, stime]) > end > > all queries within the block automatically have the defined > conditions, ie, they have been scoped. > > http://api.rubyonrails.org/classes/ActiveRecord/Base.html#M000892 > http://habtm.com/articles/2006/02/22/nested-with_scope > > Chrishmm, i have to version in my website, a backend (CMS) and a frontend (the website) In the backend i just need the find() in the frontend i need the public_find() (=find()+the public filter) It seems this is on model level?? How can i then make the diff between the CMS end the website... i need something like a module (only in frontend) thats extends the find... Thx -- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk -~----------~----~----~----~------~----~------~--~---
take a look at the second link i listed. scan down the page until you get to the section titled ''around filter''. study the example he has provided as it sounds exactly like what you are trying to accomplish. Chris On 9/5/06, Nick Brutyn <rails-mailing-list-ARtvInVfO7ksV2N9l4h3zg@public.gmane.org> wrote:> > Chris Hall wrote: > > I think you might be wanting with_scope > > > > Product.with_scope(:conditions => ["id < ?", 10]) do > > stime = Time.now.utc.strfime("%Y-%m-%d") > > @items = Product.find(:all, :conditions => ["publish = 1 and > > (publish_from is null or publish_from <= ?) and (publish_to is null or > > publish_to >= ?)", stime, stime]) > > end > > > > all queries within the block automatically have the defined > > conditions, ie, they have been scoped. > > > > http://api.rubyonrails.org/classes/ActiveRecord/Base.html#M000892 > > http://habtm.com/articles/2006/02/22/nested-with_scope > > > > Chris > > hmm, i have to version in my website, a backend (CMS) and a frontend > (the website) > > In the backend i just need the find() > in the frontend i need the public_find() (=find()+the public filter) > > It seems this is on model level?? How can i then make the diff between > the CMS end the website... i need something like a module (only in > frontend) thats extends the find... > > Thx > > -- > Posted via http://www.ruby-forum.com/. > > > >--~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk -~----------~----~----~----~------~----~------~--~---
Chris Hall wrote:> take a look at the second link i listed. scan down the page until you > get to the section titled ''around filter''. study the example he has > provided as it sounds exactly like what you are trying to accomplish. > > Chrishey, i read the link, and i use this protected def mine { :find => {:conditions => ["user_id = ?", session[:current_user].id]}, :create => {:user_id => session[:current_user].id}, } end Mail.with_scope(mine) do @mails = Mail.find(:all) end But i want to use the ScopedAccess::Filter, cuz less repetitive code. http://habtm.com/articles/2006/02/22/nested-with_scope class ScopedAccess::Filter def initialize (klass, method_scoping) ... end def before (controller) @klass.scoped_methods << @method_scoping # means enable ''with_scope'' end def after (controller) @klass.scoped_methods.pop # means disable ''with_scope'' end end around_filter ScopedAccess::Filter.new(Mail, :mine) where do i need to define/import the ScopedAccess class?? cant figure it out :s Thx -- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk -~----------~----~----~----~------~----~------~--~---
And another thing i use this code as scope protected def publish { :find => {:conditions => [''publish = 1 AND (publish_from is null OR publish_from <= ?) AND (publish_to is null OR publish_to >= ?)'', Date.today, Date.today ]}, } end but i need this in all my controllers in my frontend, so its also duplicate code, if i have to put it in every controller...Can this also be any better? i cant put it in my appliction controller, because thats is used for my backend as my frontend. Thx N. -- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk -~----------~----~----~----~------~----~------~--~---
just put the ScopedAccess class in your models directory. On 9/6/06, Nick Brutyn <rails-mailing-list-ARtvInVfO7ksV2N9l4h3zg@public.gmane.org> wrote:> > Chris Hall wrote: > > take a look at the second link i listed. scan down the page until you > > get to the section titled ''around filter''. study the example he has > > provided as it sounds exactly like what you are trying to accomplish. > > > > Chris > > hey, i read the link, and i use this > > protected > def mine > { > :find => {:conditions => ["user_id = ?", > session[:current_user].id]}, > :create => {:user_id => session[:current_user].id}, > } > end > > > Mail.with_scope(mine) do > @mails = Mail.find(:all) > end > > But i want to use the ScopedAccess::Filter, cuz less repetitive code. > http://habtm.com/articles/2006/02/22/nested-with_scope > > class ScopedAccess::Filter > def initialize (klass, method_scoping) > ... > end > def before (controller) > @klass.scoped_methods << @method_scoping # means enable > ''with_scope'' > end > def after (controller) > @klass.scoped_methods.pop # means disable > ''with_scope'' > end > end > > around_filter ScopedAccess::Filter.new(Mail, :mine) > > > where do i need to define/import the ScopedAccess class?? cant figure it > out :s > > Thx > > > -- > Posted via http://www.ruby-forum.com/. > > > >--~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk -~----------~----~----~----~------~----~------~--~---
what i might do in this case is: class FrontEndController < ApplicationController end class MyRealFrontEndController < FrontEndController end class MyOtherRealFrontEndController < FrontEndController end and put your frontend code in the FrontEndController class On 9/6/06, Nick Brutyn <rails-mailing-list-ARtvInVfO7ksV2N9l4h3zg@public.gmane.org> wrote:> > And another thing > > i use this code as scope > > protected > def publish > { > :find => {:conditions => [''publish = 1 AND (publish_from is null OR > publish_from <= ?) AND (publish_to is null OR publish_to >= ?)'', > Date.today, Date.today ]}, > } > end > > but i need this in all my controllers in my frontend, so its also > duplicate code, if i have to put it in every controller...Can this also > be any better? > > i cant put it in my appliction controller, because thats is used for my > backend as my frontend. > > Thx > N. > > -- > Posted via http://www.ruby-forum.com/. > > > >--~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk -~----------~----~----~----~------~----~------~--~---
Chris Hall wrote:> just put the ScopedAccess class in your models directory.i always get this problem uninitialized constant ScopedAccess c:/ruby/lib/ruby/gems/1.8/gems/activesupport-1.3.1/lib/active_support/dependencies.rb:123:in `const_missing'' c:/ruby/lib/ruby/gems/1.8/gems/activesupport-1.3.1/lib/active_support/dependencies.rb:133:in `const_missing'' #{RAILS_ROOT}/app/controllers/frontend/products_controller.rb:2 this is my code, what is it that i do wrong? \app\controllers\frontend\products_controller.rb: --------------------------------------------------- class Frontend::ProductsController < ApplicationController around_filter ScopedAccess::Filter.new(Product, :publish) protected def publish { :find => {:conditions => [''publish = 1 AND (publish_from is null OR publish_from <= ?) AND (publish_to is null OR publish_to >= ?)'', Date.today, Date.today ]}, } end public def index redirect_to :action => ''list'' end def list @items = Product.find(:all, :order => "name ASC") end end \app\models\scoped_access.rb: ------------------------------ class ScopedAccess::Filter def initialize (klass, method_scoping) #... end def before (controller) @klass.scoped_methods << @method_scoping # means enable ''with_scope'' end def after (controller) @klass.scoped_methods.pop # means disable ''with_scope'' end end Thanks N. -- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk -~----------~----~----~----~------~----~------~--~---
Hey, (me again :p) I am pretty new to this multi application controller stuff, always used 1 app controller. i made a new controller front_end_controller.rb app\controllers\front_end_controller.rb: ----------------------------------------- class FrontEndController < ApplicationController before_filter :test def test() p "TESTING TESTING TESTING TESTING TESTING TESTING TESTING TESTING TESTING TESTING TESTING TESTING TESTING TESTING TESTING TESTING " end end How can I run this?? When I surf to http://localhost:3000/frontend/products/list I dont see the TESTING stuff in the console... This is my folder structure: F:\rails_template_0.0.2\app\controllers F:\rails_template_0.0.2\app\controllers\application.rb F:\rails_template_0.0.2\app\controllers\backend F:\rails_template_0.0.2\app\controllers\frontend F:\rails_template_0.0.2\app\controllers\front_end_controller.rb F:\rails_template_0.0.2\app\controllers\backend\faqs_controller.rb F:\rails_template_0.0.2\app\controllers\backend\faq_questions_controller.rb F:\rails_template_0.0.2\app\controllers\backend\fsdocuments_controller.rb F:\rails_template_0.0.2\app\controllers\backend\fsimages_controller.rb F:\rails_template_0.0.2\app\controllers\backend\login_controller.rb F:\rails_template_0.0.2\app\controllers\backend\module_permissions_controller.rb F:\rails_template_0.0.2\app\controllers\backend\products_controller.rb F:\rails_template_0.0.2\app\controllers\backend\roles_controller.rb F:\rails_template_0.0.2\app\controllers\backend\users_controller.rb F:\rails_template_0.0.2\app\controllers\frontend\products_controller.rb Thanks N. -- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk -~----------~----~----~----~------~----~------~--~---
did you take a look at the plugin he wrote? probably much easier than writing it all yourself. ruby script/plugin install http://wota.jp/svn/rails/plugins/branches/stable/scoped_access/ On 9/6/06, Nick Brutyn <rails-mailing-list-ARtvInVfO7ksV2N9l4h3zg@public.gmane.org> wrote:> > Hey, > > (me again :p) > > I am pretty new to this multi application controller stuff, always used > 1 app controller. > > i made a new controller front_end_controller.rb > > app\controllers\front_end_controller.rb: > ----------------------------------------- > class FrontEndController < ApplicationController > before_filter :test > > def test() > p "TESTING TESTING TESTING TESTING TESTING TESTING TESTING TESTING > TESTING TESTING TESTING TESTING TESTING TESTING TESTING TESTING " > end > end > > How can I run this?? > When I surf to http://localhost:3000/frontend/products/list > I dont see the TESTING stuff in the console... > > This is my folder structure: > F:\rails_template_0.0.2\app\controllers > > F:\rails_template_0.0.2\app\controllers\application.rb > F:\rails_template_0.0.2\app\controllers\backend > F:\rails_template_0.0.2\app\controllers\frontend > F:\rails_template_0.0.2\app\controllers\front_end_controller.rb > > F:\rails_template_0.0.2\app\controllers\backend\faqs_controller.rb > F:\rails_template_0.0.2\app\controllers\backend\faq_questions_controller.rb > F:\rails_template_0.0.2\app\controllers\backend\fsdocuments_controller.rb > F:\rails_template_0.0.2\app\controllers\backend\fsimages_controller.rb > F:\rails_template_0.0.2\app\controllers\backend\login_controller.rb > F:\rails_template_0.0.2\app\controllers\backend\module_permissions_controller.rb > F:\rails_template_0.0.2\app\controllers\backend\products_controller.rb > F:\rails_template_0.0.2\app\controllers\backend\roles_controller.rb > F:\rails_template_0.0.2\app\controllers\backend\users_controller.rb > > F:\rails_template_0.0.2\app\controllers\frontend\products_controller.rb > > Thanks > N. > > -- > Posted via http://www.ruby-forum.com/. > > > >--~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk -~----------~----~----~----~------~----~------~--~---
Chris Hall wrote:> did you take a look at the plugin he wrote? probably much easier than > writing it all yourself. > > ruby script/plugin install > http://wota.jp/svn/rails/plugins/branches/stable/scoped_access/thanks it works now :) -- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk -~----------~----~----~----~------~----~------~--~---