【问题标题】:Really easy Rails Active-Record Associations question非常简单的 Rails Active-Record 关联问题
【发布时间】:2011-07-22 11:41:28
【问题描述】:

我有 2 个模型:

class Mission < ActiveRecord::Base
    belongs_to :category
end

class Category < ActiveRecord::Base
    has_many :missions
end

我有一个复杂的任务查找声明:

@missions = Mission.send(@view, level).send(@show).search(@search).paginate :page => params[:page], :order => actual_sort, :per_page => 50

我想在我的查询中添加搜索特定类别的可能性。 我试过了,但它不起作用:

@missions = Mission.send(@view, level).send(@show).send(:category, @category).search(@search).paginate :page => params[:page], :order => actual_sort, :per_page => 50

Rails 说 Mission 没有 .category 方法。你会如何解决这个问题?

谢谢, 奥古斯托

【问题讨论】:

    标签: ruby-on-rails associations


    【解决方案1】:

    哦...我的...上帝

    您确定这是最好的方法吗?

    如果你不解释更多,我认为人们无法帮助你,但我非常怀疑你不能这样写你的陈述:

    @missions = Mission.select("missions.level ...,category.attr ...").where(["missions.level = ? ...", level ...]).includes(:category).where(["categories.field = ?", ...]).paginate(...)
    

    显然省略号 (...) 表示一般等。

    这是我的一个测试项目的工作示例:

    i = Item.where("items.name like '%Coupon%'").includes(:category).where(["categories.name = ? ",'Category 2'])
    

    【讨论】:

    • 谢谢!您的提示帮助我找到了解决方案:
    • named_scope :category, lambda {|category| {:conditions => ["categories.name =?", category]} if category != ""}
    【解决方案2】:

    尝试在 category_id 上执行 where 选择

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-14
      • 2014-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多