标签: activerecord

Rails 4 LIKE查询 - ActiveRecord添加引号

我想尝试做类似的查询

def self.search(search, page = 1 )
  paginate :per_page => 5, :page => page,
    :conditions => ["name LIKE '%?%' OR postal_code like '%?%'", search, search],   order => 'name'
end
Run Code Online (Sandbox Code Playgroud)

但是当它运行时,有些东西正在添加引号,这会导致sql语句如此出现

SELECT COUNT(*)
FROM "schools" 
WHERE (name LIKE '%'havard'%' OR postal_code like '%'havard'%')):
Run Code Online (Sandbox Code Playgroud)

所以你可以看到我的问题.我正在使用Rails 4和Postgres 9这两个我从未使用过的,所以不确定它是否是一个活跃的记录或者可能是一个postgres的东西.

我该如何设置它以便我'%my_search%'最终在查询中喜欢?

ruby sql postgresql activerecord ruby-on-rails

120
推荐指数
6
解决办法
12万
查看次数

Rails:为什么find(id)会在rails中引发异常?

可能重复:
当id 1不存在时,Model.find(1)给出ActiveRecord错误

如果数据库中没有id为1的用户,则尝试User.find(1)将引发异常.

为什么是这样?

activerecord ruby-on-rails

116
推荐指数
1
解决办法
6万
查看次数

什么时候应该在Rails中使用"has_many:through"关系?

我试图了解什么has_many :through是什么以及何时使用它(以及如何使用).但是,我没有得到它.我正在阅读Beginning Rails 3,我尝试使用谷歌搜索,但我无法理解.

activerecord ruby-on-rails ruby-on-rails-3

116
推荐指数
3
解决办法
7万
查看次数

ActiveRecord,has_many:through和Polymorphic Associations

伙计们,

想确保我理解正确.请忽略继承的情况(SentientBeing),尝试着重于has_many中的多态模型:通过关系.也就是说,考虑以下......

class Widget < ActiveRecord::Base
  has_many :widget_groupings

  has_many :people, :through => :widget_groupings, :source => :person, :conditions => "widget_groupings.grouper_type = 'Person'"
  has_many :aliens, :through => :widget_groupings, :source => :alien, :conditions => "video_groupings.grouper_type = 'Alien'"
end

class Person < ActiveRecord::Base
  has_many :widget_groupings, :as => grouper
  has_many :widgets, :through => :widget_groupings
end

class Alien < ActiveRecord::Base
  has_many :widget_groupings, :as => grouper
  has_many :widgets, :through => :widget_groupings  
end

class WidgetGrouping < ActiveRecord::Base
  belongs_to :widget
  belongs_to :grouper, :polymorphic => true
end
Run Code Online (Sandbox Code Playgroud)

在一个完美的世界里,我想,给一个Widget和一个人,做一些像:

widget.people << …
Run Code Online (Sandbox Code Playgroud)

activerecord ruby-on-rails polymorphic-associations

115
推荐指数
1
解决办法
2万
查看次数

在"引用"迁移中指定列名称

我想migration在Rails中创建一个引用另一个表.通常,我会这样做:

add_column :post, :user, :references
Run Code Online (Sandbox Code Playgroud)

这将创建一个名为列user_idposts表中.但是,如果,而不是user_id,我想要的东西author_id呢?我怎样才能做到这一点?

activerecord ruby-on-rails rails-migrations ruby-on-rails-3

113
推荐指数
5
解决办法
6万
查看次数

如何在Ruby on Rails中查看由给定的ActiveRecord查询生成的SQL

我想看一个给定的ActiveRecord Query将生成的SQL语句.我发现在查询发出后我可以从日志中获取此信息,但我想知道是否有可以调用的方法和ActiveRecord Query.

例如:

SampleModel.find(:all, :select => "DISTINCT(*)", :conditions => ["`date` > #{self.date}"], :limit => 1, :order => '`date`', :group => "`date`")
Run Code Online (Sandbox Code Playgroud)

我想打开irb控制台并在最后添加一个方法,该方法将显示此查询将生成的SQL,但不一定执行查询.

sql activerecord ruby-on-rails

112
推荐指数
8
解决办法
7万
查看次数

如何在Arel和Rails中进行LIKE查询?

我想做的事情如下:

SELECT * FROM USER WHERE NAME LIKE '%Smith%';
Run Code Online (Sandbox Code Playgroud)

我在Arel的尝试:

# params[:query] = 'Smith'
User.where("name like '%?%'", params[:query]).to_sql
Run Code Online (Sandbox Code Playgroud)

但是,这变为:

SELECT * FROM USER WHERE NAME LIKE '%'Smith'%';
Run Code Online (Sandbox Code Playgroud)

Arel正确地包装查询字符串'Smith',但因为这是一个LIKE语句,所以它不起作用.

如何在Arel中进行LIKE查询?

PS奖金 - 我其实是想扫描桌子上两个字段,这两个名称和说明,看是否有查询的任意匹配.那会怎么样?

activerecord ruby-on-rails arel

111
推荐指数
2
解决办法
9万
查看次数

Rails:验证两列的唯一性(一起)

我有一个Release模型mediumcountry列(以及其他).不应该releases有相同medium/ country组合的共享.

我如何将其写为rails验证?

activerecord ruby-on-rails ruby-on-rails-3 ruby-on-rails-4 rails-activerecord

111
推荐指数
3
解决办法
5万
查看次数

Rails 5:ActiveRecord OR查询

你如何orRails 5 ActiveRecord中进行查询?此外,是否有可能链orwhere在ActiveRecord的查询?

ruby activerecord ruby-on-rails rails-activerecord ruby-on-rails-5

106
推荐指数
4
解决办法
4万
查看次数

ActiveRecord:从控制台列出表中的列

我知道您可以要求ActiveRecord使用以下命令在控制台中列出表:

ActiveRecord::Base.connection.tables
Run Code Online (Sandbox Code Playgroud)

是否有一个命令可以列出给定表中的列?

sql activerecord ruby-on-rails ruby-on-rails-3

105
推荐指数
5
解决办法
7万
查看次数