我知道这两个语句执行相同的SQL:
运用 select
User.select(:email)
# SELECT `users`.`email` FROM `users`
Run Code Online (Sandbox Code Playgroud)
并使用 pluck
User.all.pluck(:email)
# SELECT `users`.`email` FROM `users`
Run Code Online (Sandbox Code Playgroud)
现在我需要获取从每个方法派生的SQL语句.鉴于该select方法返回一个ActiveRecord::Relation,我可以调用该to_sql方法.但是,我无法弄清楚如何获取从ActiveRecord::Relation对象的pluck操作派生的SQL语句,因为结果是一个数组.
请考虑到这是问题的简化.拔出的属性数量可以任意高.
任何帮助,将不胜感激.
几年前(2013年),我使用Globalize 0.3.0,Rails 3.2.21,Ruby 2.1.6编写了一个全局化我的模型的一个字段的迁移:
class CreateMyModelTranslationTable < ActiveRecord::Migration
def up
change_table :my_model do |t|
t.remove :name
end
MyModel.create_translation_table! name: :string
end
def down
change_table :my_model do |t|
t.string :name
end
MyModel.drop_translation_table!
end
end
Run Code Online (Sandbox Code Playgroud)
我添加了相应的翻译属性:
translates :name, required: true
Run Code Online (Sandbox Code Playgroud)
现在我想添加一个名为的第二个全球化属性title,所以我将此行添加到MyModel:
translates :title
Run Code Online (Sandbox Code Playgroud)
甚至在编写第二个迁移脚本之前,我就删除了我的数据库并执行所有迁移.
bundle exec rake db:drop db:create db:migrate
Run Code Online (Sandbox Code Playgroud)
我注意到我在2013年写的迁移脚本失败了.这怎么可能?这就是我现在所知道的.
create_translation_table!我的2013迁移脚本中的方法是在转换表中添加模型中找到的所有可翻译字段,即:name和:title.恕我直言,这有点奇怪,因为这段代码实际上正在执行数据库更改,这些更改可能在创建迁移后添加到模型中.
Globalize gem尝试猜测它的类型:title并且它似乎失败了,因为我在执行2013迁移脚本时遇到了这个错误:
Bad field type for field :title (nil), should be :string or :text
我正在寻找一种方法来实现以下任何选项:
:title运行2013迁移脚本创建列,并创建2015迁移脚本以添加此列no te转换表(我认为此选项更好):title …我面临以下问题。正如我们所看到的,我的game对象有两个关联的:players
=> game.players.count
2
Run Code Online (Sandbox Code Playgroud)
但是,该pluck方法返回重复的值:
=> game.players.pluck :name
["Alice", "Alice", "Bob", "Bob"]
Run Code Online (Sandbox Code Playgroud)
两者Game和Player延伸ActiveRecord::Base. 我完全不知道这里到底发生了什么。
相关宝石:
rails 4.2.8
mysql2 0.3.21
Run Code Online (Sandbox Code Playgroud)
关于可能发生的事情有任何线索吗?提前致谢。
我里面有div三个span元素.这三个span元素组成一个单独的文本,我希望将其限制为一行.如果宽度大于div's,我想对文本应用省略号
JSFiddle 在这里
HTML:
<div class="box">
<span>First text</span>
<span>Second text</span>
<span>Third long, long text</span>
</div>
Run Code Online (Sandbox Code Playgroud)
CSS:
.box{
border: 1px solid red;
width: 200px;
}
Run Code Online (Sandbox Code Playgroud)