`
dazuiba
  • 浏览: 130849 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

has_many 中,find_sql的小技巧

阅读更多
大多时候,rails提供的对象关系方法:has_many,belongs_to,已经很好用了。但有时需要自己定制一些查询,比如:某个分类下的所有书籍(包含子分类)
class BookCategory < ActiveRecord::Base
  has_many :books,:foreign_key => "category_id"
  has_many :all_books,:class_name=>"Book" , :finder_sql =>"
  	select * from #{Book.table_name}
  	where category_id between #{id}.00 and #{id}.99"

然后执行,发现错误:
warning: Object#id will be deprecated; use Object#object_id

在这里,由于find_sql中的字符串所处环境为Class,故#{self.id}调用的是Class.id,而我们想要的是BookCategory的对象方法!
这个问题rails自然考虑到了,仔细读读doc,你会发现,find_sql,在文档中用的是“单引号”:  ''
于是问题迎刃而解
分享到:
评论

相关推荐

    serialize_has_many:将has_many关系序列化为单个列。 使用ActiveRecord轻松实现NoSQL!

    安装将此行添加到您的应用程序的Gemfile中: gem 'serialize_has_many' 然后执行: $ bundle 或将其自己安装为: $ gem install serialize_has_many用法假设您有一个“父母有很多孩子”的关系。 要使用serialize_has...

    activemodel-associations, 用于普通 ruby 对象的has_many和belongs_to宏.zip

    activemodel-associations, 用于普通 ruby 对象的has_many和belongs_to宏 ActiveModel::Associations 用于普通 ruby 对象的has_many 和 belongs_to 宏。安装将此行添加到你的应用程序的Gemfile中:gem 'activemodel-

    many-to-many-through:这是使用has_many的许多示例教程

    这是关于如何使用has_many :throght创建多对多关联的完整示例has_many :throght在此示例中,我使用staff模型和client模型,其中人员有很多客户,而客户有很多员工 操作说明 在下面的终端中输入 $ rails new many - ...

    has_many_commas:用于将 active_record has_many 关系写入表格格式(如 CSV)的 ruby​​ gem

    HasManyCommas 允许您使用 active_record 查询以及与该查询模型上的 has_many 关联关联的符号,并提供每个父记录行及其所有子记录的表格表示,作为额外的列附加。 例如,假设您有一个用户模型: user = User....

    nested_form_fields:在Ruby on Rails表单中动态添加和删除嵌套的has_many关联字段

    嵌套表单字段 这个Rails gem帮助创建具有嵌套has_many关联的模型的表单。 它使用jQuery动态添加和删除嵌套关联。 适用于任意深度嵌套的关联(经过4个级别的测试)。 可与诸如类的表单构建器。 需要Ruby 1.9+和Rails...

    one_plus_n_detector:Elixir库可帮助您使用Ecto检测应用程序中的1 + n个查询

    当您具有诸如has_many , has_one或belongs_to has_many的父子关系时,您可以通过一个查询加载父记录,然后为每条记录触发另一个SQL语句以加载相关的孩子。 假设您有以下Ecto模式 defmodule User do use Ecto . ...

    dpl_has_many_through_hwr:DPL作业复习-has_many_through

    在database.yml中,将数据库what_ever_you_named_your_start_project的名称更改为project-name rails db:create db:migrate db:seed rails s -p 3001 设置客户端的步骤 cd client && yarn yarn start 处理git ...

    has_many集合「has_many collections」-crx插件

    这对于制造商,查看他们的产品在哪个馆藏中是有用的,而且对于所有其他可能以这种方式发现与他们当前正在寻找的产品相关的产品的其他用户也很有用。 这是浏览Product Hunt并浏览其庞大数据库的新方法。 支持语言:...

    Data_Mining_with_Microsoft_SQL_Server_2008_(Wiley_2009)

    Data mining has grown from an isolated part of SQL Server Analysis Services with two algorithms, to an intrinsic part of the SQL Server Business Intelligence(BI) platform that is fully integrated ...

    _Firefox_Focus_(iOS)_has_moved_to_a_new_

    __Firefox_Focus_(iOS)_has_moved_to_a_new_reposito_focus-iosreposito_Focus-iOS__Firefox_Focus_(iOS)_has_moved_to_a_new_reposito_focus-ios.zip

    sharestudy

    テーブル设计使用者柱子类型选项昵称细绳null:假电子邮件细绳null:假加密密码细绳null:假介绍文本图像文件协会has_many:文章has_many:评论has_many:like_articles has_many:like_users has_many:用户标签has...

    关于Rails中的表关联的程序

    Rails提供了四种基本的关联类型:` belongs_to`、` has_one`、` has_many` 和 `has_and_belongs_to_many`。这些关联允许我们建立对象之间的关系,从而在编程时简化数据的存取。 1. `belongs_to` 关联: 这种关联...

    displaying-has-many-through-rails-onl01-seng-pt-032320

    通过关联通过belongs_to,has_many和has_many查询关联。 遍历视图中的关联并显示主要实例的关联数据。 通过has_many识别联接模型。 概述 我们已经看到了如何使用简单的关联在Rails中向我们的用户显示数据,但是更...

    sports-junkies

    消息has_many:tags,通过:tag_users has_many:tag_users has_many:职位has_many:评论房间表柱子类型选项姓名细绳null:假协会has_many:room_users has_many:users,通过:room_users has_many:消息当属:...

    Microsoft SQL Server 2005 向后兼容组件 [免费版]

    Microsoft SQL Server 2005 Backward Compatibility Components (Microsoft SQL Server 2005 向后兼容组件) SQL Server Backward Compatibility 包中包含最新版本的 Data Transformation Services 2000 运行时 (DTS...

    freemarket_sample_45

    数据库设计 用户表 ... column_physical column_logic ...has_many:评估,通过:: user_evaluation has_many:产品,通过::喜欢 has_one:user_profile has_one:user_address has_one:送货地址 h

    Here_is_a_collection_of_repository_that_has_applie_

    Here_is_a_collection_of_repository_that_has_applie_Software-CopyrightSoftware-Copyright.zip

    THIS_REPOSITORY_HAS_MOVED_TO_github.comnvidiacub_cub.zip

    THIS_REPOSITORY_HAS_MOVED_TO_github.comnvidiacub_cub

    group_calendar

    餐桌设计用户表柱子类型选项姓名细绳null:假电子邮件细绳null:假密码细绳null:假身份细绳协会has_many:user_groups has_many:groups,通过::user_groups has_many:日历has_many:聊天组表柱子类型选项姓名...

    仇恨

    has_many:like_messages,通过::likes,来源::message 消息テーブル 柱子 类型 选项 标题 文本 null:假 内容 文本 null:假 用户身份 整数 null:false,foreign_key:true 图像 细绳 category_id 整数 ...

Global site tag (gtag.js) - Google Analytics