小编Bus*_*ler的帖子

ActiveRecord采用SQL

我知道这两个语句执行相同的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语句,因为结果是一个数组.

请考虑到这是问题的简化.拔出的属性数量可以任意高.

任何帮助,将不胜感激.

activerecord ruby-on-rails rails-activerecord

11
推荐指数
1
解决办法
973
查看次数

使用Globalize迁移错误

几年前(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

我正在寻找一种方法来实现以下任何选项:

  • 阻止Globalize为:title运行2013迁移脚本创建列,并创建2015迁移脚本以添加此列no te转换表(我认为此选项更好)
  • 找出如何在模型中指定:title …

ruby migration ruby-on-rails

9
推荐指数
1
解决办法
632
查看次数

Pluck 返回重复的结果

我面临以下问题。正如我们所看到的,我的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)

两者GamePlayer延伸ActiveRecord::Base. 我完全不知道这里到底发生了什么。

相关宝石:

rails 4.2.8
mysql2 0.3.21
Run Code Online (Sandbox Code Playgroud)

关于可能发生的事情有任何线索吗?提前致谢。

ruby activerecord ruby-on-rails mysql2 ruby-on-rails-4

3
推荐指数
1
解决办法
938
查看次数

带有多个跨度的文本溢出省略号

我里面有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)

html css

1
推荐指数
1
解决办法
884
查看次数