如题,要用到 sql 中的:
a = "1,2,3,4" 变为 (1,2,3,4)
select * from tables where id in a
#6 楼 @yangman_wenzhu
关键你的 "1,2,3,4"
是怎么来的……而你又要怎么使用 (1,2,3,4)
看你 4 楼的解决方法并不存在 "1,2,3,4"
,说明你最开始的根本问题很可能就不是把字符串 "1,2,3,4"
变为 (1,2,3,4)
,所以你很可能用不太合理的方式解决了一个本来并不存在的问题……
不要瞎试,否则这个大概正确的答案会伴随你几个月甚至几年。 你应该把 http://guides.rubyonrails.org/active_record_querying.html 看完,不要嫌长,否则谁也救不了你了.....
ModelB.find ModelA.pluck(:id)
Unlike select, pluck directly converts a database result into a Ruby Array, without constructing ActiveRecord objects. This can mean better performance for a large or often-running query. However, any model method overrides will not be available. For example:
class Client < ActiveRecord::Base
def name
"I am #{super}"
end
end
Client.select(:name).map &:name
# => ["I am David", "I am Jeremy", "I am Jose"]
Client.pluck(:name)
# => ["David", "Jeremy", "Jose"]
你还是用 #12 楼的方法吧,那样确实好很多。select 和 pluck 花在 DB 上的时间一样,但 select 会在内存中构建 ActiveRecord 对象,而 pluck 是直接返回数组