我需要在不同的Rails模型中使用不同的数据库连接.是不是有一种不那么黑的方式呢?
任何链接或搜索关键字都会很棒:)
如何通过使用codeigniter的activerecord查询两个日期之间的记录来从数据库中检索数据?
谢谢
假设一个数据库包含一个字段'关键字',样本记录包括:"管扳手""猴子扳手""新月扳手""新月形卷""猴子栏"
有没有办法在activerecord中找到关键字字段包含子串"crescent"的记录?
(这只是对快速概念原型的快速而肮脏的查找)
如何使用该created_at字段仅获取今天创建的记录,而不是其他日期或时间?
我在想一个->where('created_at', '>=', Carbon::now())但是我不确定它会起作用.
我很难理解如何让Rails为渲染XML模板时验证失败的子资源显示明确的错误消息.假设我有以下几个类:
class School < ActiveRecord::Base
has_many :students
validates_associated :students
def self.add_student(bad_email)
s = Student.new(bad_email)
students << s
end
end
class Student < ActiveRecord::Base
belongs_to :school
validates_format_of :email,
:with => /^([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})$/i,
:message => "You must supply a valid email"
end
Run Code Online (Sandbox Code Playgroud)
现在,在控制器中,假设我们想构建一个简单的API,允许我们在其中添加一个带有学生的新学校(再次,我说,这是一个可怕的例子,但为了问题的目的发挥作用)
class SchoolsController < ApplicationController
def create
@school = School.new
@school.add_student(params[:bad_email])
respond_to do |format|
if @school.save
# some code
else
format.xml { render :xml => @school.errors, :status => :unprocessable_entity }
end
end
end
end
Run Code Online (Sandbox Code Playgroud)
现在验证工作正常,因为电子邮件与Student类中的validates_format_of方法中设置的正则表达不匹配而死亡.但是我得到的输出如下:
<?xml version="1.0" encoding="UTF-8"?>
<errors>
<error>Students is …Run Code Online (Sandbox Code Playgroud) 我有
class Authors
has_many :books, :order => 'name ASC'
Run Code Online (Sandbox Code Playgroud)
我试图查询按名称DESC排序的所有书籍
Authors.books.order('name DESC')
Run Code Online (Sandbox Code Playgroud)
但结果是
SELECT * FROM .... ORDER BY name ASC, name DESC
Run Code Online (Sandbox Code Playgroud)
结果以名称排序ASC返回
有没有办法删除关联中的原始订单或覆盖它?或者在关系中指定一个坏主意的订单?
使用Rails 3.0.3
假设我在一个名为的数组中有15个用户id user_ids.
如果我想,比如说,将他们所有的名字改为"Bob",我可以这样做:
users = User.find(user_ids)
users.update_all( :name => 'Bob' )
Run Code Online (Sandbox Code Playgroud)
但是,这不会触发回调.如果我需要触发对这些记录保存的回调,据我所知,唯一的方法是使用:
users = User.find(user_ids)
users.each do |u|
u.name = 'Bob'
u.save
end
Run Code Online (Sandbox Code Playgroud)
但是,这可能意味着在控制器操作中执行非常长时间的任务.
所以,我的问题是,是否还有其他更好/更高性能/更多的方式来触发批量更新到一组记录,这些记录会触发记录上的回调?
activerecord ruby-on-rails callback ruby-on-rails-3 update-all
可能重复:
map(&:name)在Ruby中意味着什么?
Post.all.map(&:id)
Run Code Online (Sandbox Code Playgroud)
将返回
=> [1, 2, 3, 4, 5, 6, 7, ................]
Run Code Online (Sandbox Code Playgroud)
什么map(&:id)意思?特别是&.
我想向现有模型添加一些不需要持久化的属性,甚至是映射到数据库列的属性.是否有解决方案来指定这样的事情?
我试图用一个属性选择对象uniq @videos.uniq{|p| p.author}
time = Time.new(2014, 12)
start_time = time.beginning_of_month
end_time = time.end_of_month
videos = Video.where("created_at > ? AND created_at < ?", start_time, end_time).where("likes > ?", 15)
selected_videos = videos.uniq{|p| p.author}
puts videos.count, videos.class, selected_videos.count
#=> 23, Video::ActiveRecord_Relation, 23
videos_first = videos.first(23)
selected_videos = videos_first.uniq{|p| p.author}
puts videos_first.count, videos_first.class, selected_videos.count
#=> 23, array, 10
Run Code Online (Sandbox Code Playgroud)
.uniq不适合ActiveRecord_Relation.问题是查询返回一个Video::ActiveRecord_Relation,但我需要array.
当然,这可以通过使用来实现to_a,但这是优雅吗?
.uniq的activerecord:relation?activerecord ×10
ruby ×3
arel ×1
callback ×1
codeigniter ×1
date ×1
laravel-5.1 ×1
mysql ×1
php ×1
rest ×1
sql ×1
update-all ×1
where ×1