On 19 окт, 11:43, nick <[EMAIL PROTECTED]> wrote:
> I've got an application with 2 related models. I want to search for
> data based on conditions in both models. I want to return items from
> the first model (Contract) grouped by conditions in the second
> (Status)
>
> At the moment, I'm basically doing it as shown below. It seems really
> ugly. Any suggestions how to do it better? Thanks
> Nick
> ===========================================================
>
> class Contract < ActiveRecord::Base
> belongs_to :project
> belongs_to :status
>
> def self.activity_find(team, director)
> conditions = Array.new
> conditions << "projects.team_id = #{service_team}" if
> service_team != "0"
> conditions << "projects.director_id = #{bid_director}" if
> bid_director != "0"
> ces = Array.new
> for group in Status::GROUPS
> conditions << "statuses." + Status.group_sql(group)
> status_group = find(:all, :conditions => conditions.join(" AND
> "), :include => [:status])
> conditions.delete( conditions.last )
> ces << {:data => status_group, :name => group[:description]}
> end
> end
> end
>
> class Status < ActiveRecord::Base
> has_many :contracts
>
> GROUPS = [{:stage => 1, :description => "been entered as
> prospect"},
> {:stage => 2, :description => "proposal has been
> submitted"},
> {:stage => 3, :description => "been notified as won"},
> {:stage => 4, :description => "been contracted"}]
>
> def self.group_sql(group)
> case group[:stage]
> when 1 then 'opportunity=1'
> when 2 then 'confirmed=1'
> when 3 then 'notified=1'
> when 4 then 'contracted=1'
> end
> end
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---