Well, I don't know if a Project makes itself featured, but that's your  
dilemma.

In any case, it would be something that a controller action calls on  
either a Project instance (@project.feature_me) or the FeaturedProduct  
model (FeaturedProject.is_now(@project)).

Where you might have:

class FeaturedProject
   def self.is_now(a_project)
     fp = find(:first) || new
     fp.project = a_project
     fp.save
   end
end

-Rob

On Feb 18, 2009, at 4:16 PM, yaphi wrote:

>
> Interesting...So I'd have a method in my Project model that sets the
> FeaturedProject.
>
> I'll play with this and see how it goes. Thanks!
>
> On Feb 18, 2:08 pm, Rob Biedenharn <[email protected]>
> wrote:
>> Why not have a:
>>
>> class FeaturedProject < ActiveRecord::Base
>>    belongs_to :project
>>
>>    before_create :only_have_one
>>    validates_associated :project
>>
>>    def only_have_one
>>      self.class.count < 1
>>    end
>> end
>>
>> Then you can FeaturedProduct.find(:first) and be sure that there is
>> only one. No need to mess with the projects when the featured one
>> changes.  However, you might want to do:
>>
>> class Project
>>    after_destroy :clean_up_if_featured
>>
>>    def clean_up_if_featured
>>      fp = FeaturedProject.find(:first)
>>      if fp && fp.project_id == self.id
>>        fp.destroy
>>      else
>>        true
>>      end
>>    end
>> end
>>
>> Although that might be equivalent to:
>>
>> class Project
>>    has_one :featured_project, :dependent => :destroy
>> end
>>
>> -Rob
>>
>> On Feb 18, 2009, at 12:43 PM, yaphi wrote:
>>
>>
>>
>>> Hey Maurício,
>>
>>> I have a project model. What I'd like to do is set a project to
>>> "featured" so I can display that on the homepage. By marking a  
>>> project
>>> as featured, I'd want all the other projects to automatically have
>>> their "featured" column set to false.
>>
>>> On Feb 17, 8:55 pm, Maurício Linhares <[email protected]>
>>> wrote:
>>>> No, there isn't. Maybe you're approaching the problem from the  
>>>> wrong
>>>> point of view.
>>
>>>> Try to explain what is your problem that someone else might give
>>>> you a
>>>> better idea.
>>
>>>> -
>>>> Maurício Linhareshttp://alinhavado.wordpress.com/(pt-br) 
>>>> |http://blog.codevader.com/(en)
>>
>>>> On Tue, Feb 17, 2009 at 10:13 PM, yaphi <[email protected]>  
>>>> wrote:
>>
>>>>> I'm not sure if there is a term for this (which is why I can't  
>>>>> find
>>>>> anything on google) but I want to be able to set one of my models
>>>>> active, where the rest will be set to inactive.
>>
>>>>> I would guess to write a method that sets all the records to
>>>>> inactive,
>>>>> then set the selected object to active. That seems like it's  
>>>>> pretty
>>>>> messy though. Is there some sort of built-in functionality with
>>>>> rails
>>>>> that will only allow one column to be true at a time?
>>
>> Rob Biedenharn          http://agileconsultingllc.com
>> [email protected]
> >

Rob Biedenharn          http://agileconsultingllc.com
[email protected]



--~--~---------~--~----~------------~-------~--~----~
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 [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to