@palytoxin come
https://github.com/paper-trail-gem/paper_trail paper_trail 这个是基于 model 的,感觉如果去追踪每一条历史的话还是可以,也可以记录是谁去改变了 但是他也有个问题,因为采用的多态记录,对于主键不是 int 类型也会出问题。
早上从郑州回来的人来过,主办的方式算是野生的,这个我们几个不介意。 我们感觉非常不好的是区块链广告的强行植入。 国内的区块链说白了都是割韭菜,发空气币。
不过还是感谢 Matz 和昨天下午的精彩分享。
@mingyuan0715 @fionhan @darkbaby123 让我这只猫再来溜溜。哈哈
收了红包,上来点个赞。👍
@lilijreey 手机号可是 11 位额,Mysql 中 int 最大 2147483647。 😄 国际化中还要前缀呢 存个 string 就好了吧
访问不了,看看域名解析啊,请求如果没到也就没有写入了!
send_file ***.url
@huacnlee 好的,谢谢,升级去啰
@jiemoon 没你这一条简单!唉昨天是因为数据生成出了错误,重复存了一些 category_id。所以导致没有查正确
sql 时根据 category_id 动态生成的 如下:
pry(main)> BlogQueryBuilder.new.for_xxx([2,3]).to_sql
=> "SELECT `blogs`.* FROM `blogs` INNER JOIN `blog_categories` `blog_categories_2` ON `blogs`.`id` = `blog_categories_2`.`blog_id` AND `blog_categories_2`.`category_id` = 2 INNER JOIN `blog_categories` `blog_categories_3` ON `blogs`.`id` = `blog_categories_3`.`blog_id` AND `blog_categories_3`.`category_id` = 3 WHERE `blogs`.`status` = 2"
[6] pry(main)> BlogQueryBuilder.new.for_xxx([1,2,3,4]).to_sql
=> "SELECT `blogs`.* FROM `blogs` INNER JOIN `blog_categories` `blog_categories_1` ON `blogs`.`id` = `blog_categories_1`.`blog_id` AND `blog_categories_1`.`category_id` = 1 INNER JOIN `blog_categories` `blog_categories_2` ON `blogs`.`id` = `blog_categories_2`.`blog_id` AND `blog_categories_2`.`category_id` = 2 INNER JOIN `blog_categories` `blog_categories_3` ON `blogs`.`id` = `blog_categories_3`.`blog_id` AND `blog_categories_3`.`category_id` = 3 INNER JOIN `blog_categories` `blog_categories_4` ON `blogs`.`id` = `blog_categories_4`.`blog_id` AND `blog_categories_4`.`category_id` = 4 WHERE `blogs`.`status` = 2"
@jiemoon 目前我的采纳的做法是用了 querybuilder
q = query
category_ids.each do |category_id|
blog_category_table_alias = BlogCategory.arel_table.alias("%s_%s" % [BlogCategory.table_name, category_id])
q = q.joins(
Blog.arel_table.join(blog_category_table_alias, Arel::Nodes::InnerJoin)
.on(
Blog[:id].eq(blog_category_table_alias[:blog_id]).and(
blog_category_table_alias[:category_id].eq(category_id)
)
)
.join_sources
)
end
对应的 sql
SELECT `blogs`.* FROM `blogs` INNER JOIN `blog_categories` `blog_categories_2` ON `blogs`.`id` = `blog_categories_2`.`blog_id` AND `blog_categories_2`.`category_id` = 2 INNER JOIN `blog_categories` `blog_categories_3` ON `blogs`.`id` = `blog_categories_3`.`blog_id` AND `blog_categories_3`.`category_id` = 3 WHERE `blogs`.`status` = 2
@jiemoon 你的确查出了 2 和 3 的部分博客,但是如果 category_id 有 2 和 3 和 4 的博客就查不出来
~~我觉得应该这样
select blog_id, count(1) c from blogs_categories where category_id in (2,3) group by blog_id having c >= 2
@vikill 感谢,采用了 arel-helpers 的 QueryBuilder
@msg7086 in 的话查处来的关系时or
的关系,不是and
, 的确没必要连 categories 表,当时写那个表也是因为懒
@huacnlee 已经用了,谢谢!
顶一个
def generate(klass, column)
key = key_for(column)
loop do
raw = Devise.friendly_token
enc = OpenSSL::HMAC.hexdigest(@digest, key, raw)
break [raw, enc] unless klass.to_adapter.find_first({ column => enc })
end
end
devise 的做法,用个 loop 吧,碰撞了重新生成一个, 你想想啊 hex(1) 才两位,样本总数也才(26+10)**2 = 1296 针对数据量选择样本随机吧!
以前用的 sublime+ubuntu。现在正在转用 mac,编辑器正在找过渡!
去哪网做的还不错啊,昨天团购了一个酒店
顶一个!
session 存在的问题是遇到网络上的点赞软件那么就没办法 @nxbtch ip 的话很容易出现我们用同一个公网 ip,那么你点赞了,我就不能点了! 看来还是觉得登录点赞靠谱
顶,
@rei awesome,非常感谢!我刚开始用 initalize 死活不行, :plus1: 现在 get 到了http://stackoverflow.com/questions/24130457/the-difference-between-initialize-and-self-new