Tag: 范围

Rails – 使用另一个类方法中的类方法和第二个类的一个属性

这是我的问题:我的User类中有一个类方法。 我是从我的Shop类中的类方法调用它。 问题是,User类方法需要商店的属性group_id(Group是第三类)。 我的User类方法无法正常工作(请参阅Rails 3范围 – 查找不在特定组中的用户 ),因为它返回任何内容但它应该返回一些内容。 我的代码目前看起来像这样: class User #… # Retrieve all users not in a specific group # example: User.not_in_group(Group.find(5)) def self.not_in_group(groupid) includes(:group_users).where(“group_users.group_id != ?”, groupid) end end class Shop belongs_to :group attr_accessible :group_id def self.get_users_not_in_shop_group User .not_in_group(:group_id) end 在我的日志中,我得到: …AND (group_users.group_id != ‘group_id’) … 我相信我应该得到类似的东西: …AND (group_users.group_id != 13) … […]

rails rails可以过滤给定字段的关联类的数量

我正在使用Rails 3和Mongoid。 我有一个Folder类,然后可以与其他User类共享 class Folder has_one :owner has_many :users 我正在尝试创建两个范围,一个可用于返回所有私人文件夹,另一个用于返回所有共享文件夹。 有没有办法计算范围内的关联数? scope :personal, where(:users.count => 0) #Erroring on count… scope :shared, where(:users.count.gt => 0) #Erroring on count… 我已经考虑过构建方法,但我更喜欢使用范围,因为我希望将它们与其他范围链接起来。

Rails:查询缓存缓存默认范围?

我有一个像这样的默认范围是动态的: default_scope :conditions => [“departure_date >= ?”, DateTime.current.beginning_of_day] 当我使用这段代码时,第一天就可以了。 让我们说第一天是28-03-2011 但第二天似乎还在使用”departure_date >= 28-03-2011″ 我的默认范围是否被缓存?

将使用命名范围对错误计算奇数进行分页

我最近将我的查询分解为4个命名范围,以便更容易重新排序,并且将分页,否则总是工作正常,现在计算页数有问题。 named_scope :loc, lambda { |id| { :conditions => [‘location_id = ?’, id ] } } named_scope :datem, lambda { |*args| { :joins => :scannables, :conditions => [ “scannables.bookdate BETWEEN ? and ?”, (args[0].to_date || 3.days.from_now), (args[0].to_date+(args[1] || 3)) ], :group => ‘scannables.hostel_id’, :having => ‘SUM(scannables.available) > ‘ + ((args[1] || 3).to_i-1).to_s } } named_scope […]

使用thinking_sphinx进行搜索并过滤结果

我有这种情况,我认为这将是非常基本的,但发现我无法真正实现我所需要的。 这就是为什么我有一个think_sphinx专家的问题。 场景是这样的:我需要在公司列表中进行搜索,只返回那些拥有地址的公司(公司可以有很多地址)属于某个特定城市或根本没有(我可以做)。 我有以下型号: class Company < ActiveRecord::Base has_many :company_addresses define_index indexes :name indexes :description indexes :keywords end end 和 class CompanyAddress < ActiveRecord::Base end CompanyAddress有一个city_id属性。 如果不通过sphinx搜索循环所有返回的记录,有没有办法更容易地实现同样的事情? 我正在使用Rails 3.0.3和thinking_sphinx。

:按平均评级排序的最高评分范围

我有一个Product ,每个产品都有很多ratings 。 我正在尝试创建一个:highest_rated产品范围,按照最高平均评级对产品进行订购(每个评级都在ratings表中)。 我试过这个: scope :highest_rated, includes(:ratings).order(‘avg(ratings.rating) DESC’) 但这让我misuse of aggregate: avg()错误。 有关如何以最高平均评级订购我的产品的任何提示?

Find_by_sql作为Rails范围

来自Sitepoint的r937非常友好,可以帮助我找出从数据库返回正确结果所需的查询。 我需要的是能够将此查询用作范围,并能够将其他范围链接到此范围。 查询是: SELECT coasters.* FROM ( SELECT order_ridden, MAX(version) AS max_version FROM coasters GROUP BY order_ridden ) AS m INNER JOIN coasters ON coasters.order_ridden = m.order_ridden AND COALESCE(coasters.version,0) = COALESCE(m.max_version,0) 我尝试制作这样的范围: scope :uniques, lambda { find_by_sql(‘SELECT coasters.* FROM ( SELECT order_ridden, MAX(version) AS max_version FROM coasters GROUP BY order_ridden ) AS m INNER JOIN […]

如何在Rails 3中使用Ransack的范围?

在我的Widget模型中,我有以下内容: scope :accessible_to, lambda { |user| if user.has_role?(‘admin’) self.all else roles = user.roles role_ids = [] roles.each { |r| role_ids < role_ids) end } 理想情况下,我想将此范围用作Ransack搜索结果的filter,因此在我的控制器中我有: def index @q = Widget.accessible_to(current_user).search(params[:q]) @widgets = @q.result.order(‘created_at DESC’) end 这样做会产生以下错误: 未定义的方法`search’for Array:0x007ff9b87a0300 我猜Ransack正在寻找一个ActiveRecord关系对象,而不是一个数组。 无论如何我可以使用我的范围作为Ransack的filter吗?

Rails validates_uniqueness_of跨多个列,不区分大小写

我有一个有两个字段的模型,我将其称为first_name和last_name,我想确保两者的组合不区分大小写。 我已经在那里使用了这个: validates_uniqueness_of :first_name, :scope => :last_name 问题是,唯一性检查似乎区分大小写,即使文档说默认情况下它应该不区分大小写。 所以给出一个现有记录: { :first_name => ‘John’, :last_name => ‘Smith’ } 这将是允许的: { :first_name => ‘JOHN’, :last_name => ‘SMITH’ } 以及在名字或姓氏中有任何案例变异的任何其他记录。 为什么允许这些记录? 如何在两个字段中一起强制使用不区分大小写的唯一性?

Rails – validation嵌套属性唯一性与父级的范围父级

我在Rails中对父级父级的嵌套属性进行作用域唯一性validation时遇到问题。 背景 我有一个带有3个型号的rails 4应用程序: #app/models/account.rb class Account < ActiveRecord::Base has_many :contacts, dependent: :destroy end #app/models/contact.rb class Contact < ActiveRecord::Base belongs_to :account has_many :email_addresses, dependent: :destroy, validate: :true, inverse_of: :contact accepts_nested_attributes_for :email_addresses,allow_destroy: true validates :email_addresses, presence: true end #app/models/email_address.rb class EmailAddress < ActiveRecord::Base belongs_to :contact, inverse_of: :email_addresses validates :label, presence: true validates :contact, presence: true validates […]