validates_length_of :description, :maximum => 255
validate :validate_board
- scope :visible, lambda {|*args| { :include => :project,
- :conditions => Project.allowed_to_condition(args.shift || User.current, :view_messages, *args) } }
+ scope :visible, lambda {|*args|
+ includes(:project).where(Project.allowed_to_condition(args.shift || User.current, :view_messages, *args))
+ }
safe_attributes 'name', 'description', 'parent_id', 'move_to'
validates_uniqueness_of :revision, :scope => :repository_id
validates_uniqueness_of :scmid, :scope => :repository_id, :allow_nil => true
- scope :visible,
- lambda {|*args| { :include => {:repository => :project},
- :conditions => Project.allowed_to_condition(args.shift || User.current, :view_changesets, *args) } }
+ scope :visible, lambda {|*args|
+ includes(:repository => :project).where(Project.allowed_to_condition(args.shift || User.current, :view_changesets, *args))
+ }
after_create :scan_for_issues
before_create :before_create_cs
validates_presence_of :project, :title, :category
validates_length_of :title, :maximum => 60
- scope :visible, lambda {|*args| { :include => :project,
- :conditions => Project.allowed_to_condition(args.shift || User.current, :view_documents, *args) } }
+ scope :visible, lambda {|*args|
+ includes(:project).where(Project.allowed_to_condition(args.shift || User.current, :view_documents, *args))
+ }
safe_attributes 'category_id', 'title', 'description'
validates_numericality_of :estimated_hours, :allow_nil => true
validate :validate_issue, :validate_required_fields
- scope :visible,
- lambda {|*args| { :include => :project,
- :conditions => Issue.visible_condition(args.shift || User.current, *args) } }
+ scope :visible, lambda {|*args|
+ includes(:project).where(Issue.visible_condition(args.shift || User.current, *args))
+ }
scope :open, lambda {|*args|
is_closed = args.size > 0 ? !args.first : false
- {:conditions => ["#{IssueStatus.table_name}.is_closed = ?", is_closed], :include => :status}
+ includes(:status).where("#{IssueStatus.table_name}.is_closed = ?", is_closed)
}
- scope :recently_updated, lambda { { :order => "#{Issue.table_name}.updated_on DESC" } }
- scope :on_active_project, lambda { { :include => [:status, :project, :tracker],
- :conditions => ["#{Project.table_name}.status=#{Project::STATUS_ACTIVE}"] } }
+ scope :recently_updated, lambda { order("#{Issue.table_name}.updated_on DESC") }
+ scope :on_active_project, lambda {
+ includes(:status, :project, :tracker).where("#{Project.table_name}.status = ?", Project::STATUS_ACTIVE)
+ }
before_create :default_assign
before_save :close_duplicates, :update_done_ratio_from_issue_status, :force_updated_on_change
after_update :update_messages_board
after_destroy :reset_counters!
- scope :visible, lambda {|*args| { :include => {:board => :project},
- :conditions => Project.allowed_to_condition(args.shift || User.current, :view_messages, *args) } }
+ scope :visible, lambda {|*args|
+ includes(:board => :project).where(Project.allowed_to_condition(args.shift || User.current, :view_messages, *args))
+ }
safe_attributes 'subject', 'content'
safe_attributes 'locked', 'sticky', 'board_id',
after_create :add_author_as_watcher
- scope :visible, lambda {|*args| {
- :include => :project,
- :conditions => Project.allowed_to_condition(args.shift || User.current, :view_news, *args)
- }}
+ scope :visible, lambda {|*args|
+ includes(:project).where(Project.allowed_to_condition(args.shift || User.current, :view_news, *args))
+ }
safe_attributes 'title', 'summary', 'description'
has_many :issue_categories, :foreign_key => 'assigned_to_id', :dependent => :nullify
# Groups and active users
- scope :active, lambda { { :conditions => "#{Principal.table_name}.status = 1" } }
+ scope :active, lambda { where("#{Principal.table_name}.status = 1") }
scope :like, lambda {|q|
q = q.to_s
after_save :update_position_under_parent, :if => Proc.new {|project| project.name_changed?}
before_destroy :delete_all_members
- scope :has_module, lambda { |mod| { :conditions => ["#{Project.table_name}.id IN (SELECT em.project_id FROM #{EnabledModule.table_name} em WHERE em.name=?)", mod.to_s] } }
- scope :active, lambda { { :conditions => "#{Project.table_name}.status = #{STATUS_ACTIVE}" } }
- scope :status, lambda {|arg| arg.blank? ? {} : {:conditions => {:status => arg.to_i}} }
- scope :all_public, lambda { { :conditions => { :is_public => true } } }
- scope :visible, lambda {|*args| {:conditions => Project.visible_condition(args.shift || User.current, *args) }}
+ scope :has_module, lambda {|mod|
+ where("#{Project.table_name}.id IN (SELECT em.project_id FROM #{EnabledModule.table_name} em WHERE em.name=?)", mod.to_s)
+ }
+ scope :active, lambda { where(:status => STATUS_ACTIVE) }
+ scope :status, lambda {|arg| where(arg.blank? ? nil : {:status => arg.to_i}) }
+ scope :all_public, lambda { where(:is_public => true) }
+ scope :visible, lambda {|*args| where(Project.visible_condition(args.shift || User.current, *args)) }
scope :allowed_to, lambda {|*args|
user = User.current
permission = nil
user = args.shift
permission = args.shift
end
- { :conditions => Project.allowed_to_condition(user, permission, *args) }
+ where(Project.allowed_to_condition(user, permission, *args))
}
scope :like, lambda {|arg|
if arg.blank?
- {}
+ where(nil)
else
pattern = "%#{arg.to_s.strip.downcase}%"
- {:conditions => ["LOWER(identifier) LIKE :p OR LOWER(name) LIKE :p", {:p => pattern}]}
+ where("LOWER(identifier) LIKE :p OR LOWER(name) LIKE :p", :p => pattern)
end
}
user = args.shift || User.current
base = Project.allowed_to_condition(user, :view_issues, *args)
user_id = user.logged? ? user.id : 0
- {
- :conditions => ["(#{table_name}.project_id IS NULL OR (#{base})) AND (#{table_name}.is_public = ? OR #{table_name}.user_id = ?)", true, user_id],
- :include => :project
- }
+
+ includes(:project).where("(#{table_name}.project_id IS NULL OR (#{base})) AND (#{table_name}.is_public = ? OR #{table_name}.user_id = ?)", true, user_id)
}
def initialize(attributes=nil, *args)
before_validation :set_project_if_nil
validate :validate_time_entry
- scope :visible, lambda {|*args| {
- :include => :project,
- :conditions => Project.allowed_to_condition(args.shift || User.current, :view_time_entries, *args)
- }}
- scope :on_issue, lambda {|issue| {
- :include => :issue,
- :conditions => "#{Issue.table_name}.root_id = #{issue.root_id} AND #{Issue.table_name}.lft >= #{issue.lft} AND #{Issue.table_name}.rgt <= #{issue.rgt}"
- }}
- scope :on_project, lambda {|project, include_subprojects| {
- :include => :project,
- :conditions => project.project_condition(include_subprojects)
- }}
+ scope :visible, lambda {|*args|
+ includes(:project).where(Project.allowed_to_condition(args.shift || User.current, :view_time_entries, *args))
+ }
+ scope :on_issue, lambda {|issue|
+ includes(:issue).where("#{Issue.table_name}.root_id = #{issue.root_id} AND #{Issue.table_name}.lft >= #{issue.lft} AND #{Issue.table_name}.rgt <= #{issue.rgt}")
+ }
+ scope :on_project, lambda {|project, include_subprojects|
+ includes(:project).where(project.project_condition(include_subprojects))
+ }
scope :spent_between, lambda {|from, to|
if from && to
- {:conditions => ["#{TimeEntry.table_name}.spent_on BETWEEN ? AND ?", from, to]}
+ where("#{TimeEntry.table_name}.spent_on BETWEEN ? AND ?", from, to)
elsif from
- {:conditions => ["#{TimeEntry.table_name}.spent_on >= ?", from]}
+ where("#{TimeEntry.table_name}.spent_on >= ?", from)
elsif to
- {:conditions => ["#{TimeEntry.table_name}.spent_on <= ?", to]}
+ where("#{TimeEntry.table_name}.spent_on <= ?", to)
else
- {}
+ where(nil)
end
}
has_one :api_token, :class_name => 'Token', :conditions => "action='api'"
belongs_to :auth_source
- scope :logged, lambda { { :conditions => "#{User.table_name}.status <> #{STATUS_ANONYMOUS}" } }
- scope :status, lambda {|arg| arg.blank? ? {} : {:conditions => {:status => arg.to_i}} }
+ scope :logged, lambda { where("#{User.table_name}.status <> #{STATUS_ANONYMOUS}") }
+ scope :status, lambda {|arg| where(arg.blank? ? nil : {:status => arg.to_i}) }
acts_as_customizable
before_save :handle_redirects
# eager load information about last updates, without loading text
- scope :with_updated_on, lambda { {
- :select => "#{WikiPage.table_name}.*, #{WikiContent.table_name}.updated_on, #{WikiContent.table_name}.version",
- :joins => "LEFT JOIN #{WikiContent.table_name} ON #{WikiContent.table_name}.page_id = #{WikiPage.table_name}.id"
- } }
+ scope :with_updated_on, lambda {
+ select("#{WikiPage.table_name}.*, #{WikiContent.table_name}.updated_on, #{WikiContent.table_name}.version").
+ joins("LEFT JOIN #{WikiContent.table_name} ON #{WikiContent.table_name}.page_id = #{WikiPage.table_name}.id")
+ }
# Wiki pages that are protected by default
DEFAULT_PROTECTED_PAGES = %w(sidebar)