假如 A、A1、A2 三个表 一个 A 对 N 个 A1,N 个 A2。
我们一般单表查询,不用 join。如果查询条件同时需要关联 A、A1、A2 查询,就使用 ES。
先通过 ES 分页查询到 A 的 id 列表,然后再拿 id 列表去数据库分别查询 3 次,A 表 A1 表 A2 表,再组装起来返回给前端。都通过 id 查询挺快的。
HTTParty.post "https://sso.baklib.com/registrations/sms-auth-code.json,body:" {mobile: "xxx"} 可以刷短信
最近也在找 Acitiviti,楼主现在是怎么处理的。
很有用的工具,从发帖已经用到现在了。有个小建议,能不能把搜索后的第一个 Translations 默认展开啊。
其余的数据库不知道,Mysql select 的列可以不用都写在 group by 里面啊
你说的这两种方式在 mysql 都不行,都是先 group,较小的那个 ID 为去重以后的记录。
FalseFeedback.order("created_at desc").group("system_id")
SELECT * FROM false_feed_backs GROUP BY system_id ORDER BY created_at DESC
FalseFeedback.select('max(created_at) as created_at , system_id').group("system_id").order('created_at desc')
SELECT max(created_at) as created_at, system_id FROM false_feed_backs GROUP BY system_id ORDER BY created_at DESC
可以这样
SELECT system_id,created_at
FROM (
SELECT system_id,created_at
FROM false_feed_backs
ORDER BY created_at DESC
) t
GROUP BY system_id
哈哈,这位兄弟可爱,聊天鬼才。
to_date 捕捉异常简单粗暴。
[1] pry(main)> "1".to_date
ArgumentError: invalid date
from /Users/xor3/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/activesupport-5.1.5/lib/active_support/core_ext/string/conversions.rb:45:in `parse'
[2] pry(main)> "2014-08-20".to_date
=> Wed, 20 Aug 2014
[3] pry(main)> "2014/08/20".to_date
=> Wed, 20 Aug 2014
如果用户资料数据不多,页面不大,编辑不跳转页面,通过弹窗异步实现感觉操作更方便点。
匿名发完以后,想想管理员视角会不会有点后怕。
好巧,同在武汉,也叫东哥。
趋势有什么好处啊。
其实看个人爱好,上次写的一个新开页,然后有人反应说开页面太多了,开多了强迫症看着乱,还要关闭。 新闻,论坛,google 的一些网站我也比较倾向新开页,一直返回确实不爽。 google 也不是新开页,我一般都是按住 commond 键点鼠标也是新开,还蛮方便。
珠海确实是个很漂亮城市,国家领导人都喜欢往这里跑。
什么鬼
买了五张票
中午吃饭讨论一下,挺想去,一次没去过,见见世面。
新司机,早鸟票和全价票的区别是啥。类似于欢乐谷的夜场票和全价票吗?
去看一下 becomes 和 becomes! 方法
class AAddress < Address
end
class BAddress < Address
end
a_address = Address.new(type: 'AAddress')
puts a_address.class.name
结果 'AAddress'
puts a_address.becomes(Address).class.name
结果 'Address'
XxxJob.set(wait_until: xx).perform_later(xx) 收到消息以后,把这个队列任务删掉,然后和上面一样再重新创建一条定时任务
你说数据量不大的话,可以试试这样,我目前这样导觉得还挺方便的。
your_app/scripts//migrate/database.yml
to:
adapter: mysql2
pool: 5
reconnect: true
username: x
password: x
host: x
database: x
from:
adapter: mysql2
pool: 5
reconnect: true
username: x
password: x
host: x
database: x
your_app/scripts//migrate/migrate_db.rb
require 'active_record'
require 'yaml'
ROOT = File.expand_path("..",__FILE__)
DB_CONFIG = YAML.load(File.new("#{ROOT}/database.yml"))
class FromDB < ActiveRecord::Base
self.record_timestamps = false
self.abstract_class = true
establish_connection(DB_CONFIG['from'])
end
class ToDB < ActiveRecord::Base
self.record_timestamps = false
self.abstract_class = true
establish_connection(DB_CONFIG['to'])
def self.save_from(obj)
n = self.find_by_id(obj.id) || self.new
self.column_names.each do |c|
m = "convert_#{c}"
if obj.respond_to?(m)
n.send("#{c}=", obj.send(m))
else
n.send("#{c}=", obj.send(c)) if obj.respond_to?(c)
end
end
n.save
n
end
end
copy 上面的代码
eg: 迁移 direct_ship_prices 的数据
#字段名和属性不一样的,写一个 convert_new_column 方法转换,一样的就不用写。
your_app/scripts//migrate/models/direct_ship_price.rb
require File.expand_path("../../migrate_db.rb",__FILE__)
class FromDirectShipPrice < FromDB
self.table_name = 'direct_ship_prices'
#以前的公司id叫client_id,现在叫company_id
def convert_company_id
self.client_id
end
#以前的status是integer,现在是boolean
def convert_status
self.status == 0 ? false : true
end
end
class ToDirectShipPrice < ToDB
self.table_name = 'direct_ship_prices'
end
FromDirectShipPrice.find_each do |src|
ToDirectShipPrice.save_from(src)
end
最后 rails runner -e ENV script/migrate/models/direct_ship_price.rb
好了,非常感谢 。我去了解一下 rbenv。