小编Joe*_*cha的帖子

PostgreSQL:在Rails迁移中使用add_column"after"选项

我正在尝试在"位置"列之后向现有的Postgres表添加一个新列"纬度".

使用此语法将列放在正确的位置:

add_column :table, :column, :decimal, :after => :existing_column
Run Code Online (Sandbox Code Playgroud)

使用此语法可确保该字段是正确的数据类型

add_column :table, :column, :decimal, {:precision => 10, :scale => 6}
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试将两者结合起来时:

add_column :table, :column, :decimal, {:precision => 10, :scale => 6}, :after => :existing_column
Run Code Online (Sandbox Code Playgroud)

我得到"ArgumentError:错误的参数数量(5为3..4)"

"不用担心",我想,"我只会把争论结合起来!":

add_column :table, :column, :decimal, {:precision => 10, :scale => 6, :after => :existing_column}
Run Code Online (Sandbox Code Playgroud)

但是这些列出现在表的末尾.我究竟做错了什么?

谢谢 :)

postgresql hash ruby-on-rails database-migration

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

Ember Simple Auth - 将当前用户注入每条路线

我正在使用Ember Simple Auth构建一个站点.

我按照这些说明尝试将当前用户对象添加到会话中并使用这个略微适应的代码工作:

import Ember from 'ember';
import Session from 'simple-auth/session';

export default {
  name: "current-user",
  before: "simple-auth",
  initialize: function(container) {
    Session.reopen({
      setCurrentUser: function() {
        var accessToken = this.get('secure.token');
        var _this = this;
        if (!Ember.isEmpty(accessToken)) {
          return container.lookup('store:main').find('user', 'me').then(function(user) {
            _this.set('content.currentUser', user);
          });
        }
      }.observes('secure.token'),
      setAccount: function() {
        var _this = this;
        return container.lookup('store:main').find('account', this.get('content.currentUser.account.content.id')).then(function(account) {
          _this.set('content.account', account);
        });
      }.observes('content.currentUser'),
    });
  }
};
Run Code Online (Sandbox Code Playgroud)

但是,使用最新版本的Ember我得到以下内容:

弃用:lookup在登记处被召集.该initializerAPI不再接收一个容器,你应该使用一个instanceInitializer从容器中查找对象.有关详细信息,请参阅http://emberjs.com/guides/deprecations#toc_deprecate-access-to-instances-in-initializers.

我知道我需要将上面的内容拆分为/ app/initializers和/ app/instance-initializers(根据这里 …

dependency-injection ember.js ember-simple-auth

8
推荐指数
2
解决办法
4194
查看次数

Video.js - 阻止点击播放功能

我正在使用video.js将视频嵌入到HTML页面中.它将被用作仅限ipad的网络应用程序,因此我相信它使用的是原生HTML5播放器.我正在尝试禁用点击播放功能(以便用户必须使用控件)但我无法这样做.

我尝试从视频/视频播放器/海报中取消绑定点击事件(使用jQuery),我尝试使用addevent添加e.preventDefault()到视频中,但这似乎都不起作用.

PS.我发现有几篇帖子说你可以在代码中注明一行,但我的版本中不存在这一行 - 也许这个插件已经被重写了.

html5 html5-video video.js

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

将其他数据添加到ActiveRecord对象

我正在检索"Widget"ActiveRecord对象:

@widget = Widget.find(params[:id])
Run Code Online (Sandbox Code Playgroud)

我想在返回之前添加一些额外的数据,所以我使用以下方法添加它:

@widget.display_name = "test display name"
Run Code Online (Sandbox Code Playgroud)

我可以做puts @widget.display_name,这确实显示"测试显示名称",但是当我调用puts @widget.inspect它时不包括额外的数据.

我原来得到:

NoMethodError (undefined method `display_name=' for # <Widget:0x007fe6147e8e00>):
Run Code Online (Sandbox Code Playgroud)

但我包含attr_accessor :display_name在Widget模型中,并停止了该特定消息.

为了清楚起见,我实际上并不想将这些额外的数据存储在数据库中,而只是将其作为JSON对象返回.我正在使用JSON渲染render json: @widget, status: :ok,这也不包括额外的数据.

为清楚起见,这是我的代码:

def show
    @widget = Widget.find(params[:id])
    @widget.display_name = "test display name"
    puts @widget.display_name # displays "test display name"
    puts @widget.inspect
    if @widget
      render json: @widget, status: :ok
    else
      head :not_found
    end
  end
Run Code Online (Sandbox Code Playgroud)

json ruby-on-rails attr-accessor

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