我想尝试做类似的查询
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%'最终在查询中喜欢?
我试图了解什么has_many :through是什么以及何时使用它(以及如何使用).但是,我没有得到它.我正在阅读Beginning Rails 3,我尝试使用谷歌搜索,但我无法理解.
伙计们,
想确保我理解正确.请忽略继承的情况(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) 我想migration在Rails中创建一个引用另一个表.通常,我会这样做:
add_column :post, :user, :references
Run Code Online (Sandbox Code Playgroud)
这将创建一个名为列user_id在posts表中.但是,如果,而不是user_id,我想要的东西author_id呢?我怎样才能做到这一点?
我想看一个给定的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,但不一定执行查询.
我想做的事情如下:
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奖金 - 我其实是想扫描桌子上两个字段,这两个名称和说明,看是否有查询的任意匹配.那会怎么样?
我有一个Release模型medium和country列(以及其他).不应该releases有相同medium/ country组合的共享.
我如何将其写为rails验证?
activerecord ruby-on-rails ruby-on-rails-3 ruby-on-rails-4 rails-activerecord
你如何or在Rails 5 ActiveRecord中进行查询?此外,是否有可能链or与where在ActiveRecord的查询?
ruby activerecord ruby-on-rails rails-activerecord ruby-on-rails-5
我知道您可以要求ActiveRecord使用以下命令在控制台中列出表:
ActiveRecord::Base.connection.tables
Run Code Online (Sandbox Code Playgroud)
是否有一个命令可以列出给定表中的列?