小编dou*_*lea的帖子

Rails 3.1.0迁移中remove_index的正确语法是什么?

我正在将Devise添加到现有的Rails应用程序中,并且已经定义了Users表.设计生成器推出了以下迁移:

class AddDeviseToUsers < ActiveRecord::Migration
  def self.up
    change_table(:users) do |t|

     ## Database authenticatable
     t.string :email,              :null => false, :default => ""
     t.string :encrypted_password, :null => false, :default => ""

     ## Recoverable
     t.string   :reset_password_token
     t.datetime :reset_password_sent_at

     ## Rememberable
     t.datetime :remember_created_at

     ## Trackable
     t.integer  :sign_in_count, :default => 0

     blah blah blah....

   end

   add_index :users, :email,                :unique => true
   add_index :users, :reset_password_token, :unique => true
 end
Run Code Online (Sandbox Code Playgroud)

没有生成向下迁移,我有一点时间删除这些索引.我在文档中看到了不同的建议表示法,并在网上提出了不同的建议,但似乎没有一个对我有用.例如...

def self.down
  change_table(:users) do |t|
    t.remove  :email
    t.remove  :encrypted_password

    t.remove  :reset_password_token

    blah blah blah...
  end

  remove_index …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails rails-migrations ruby-on-rails-3.1

64
推荐指数
4
解决办法
5万
查看次数

为什么在Rails中不推荐使用auto_link?

我意识到它被拉进了一个独立的宝石,但是原因是什么?这只是简化Rails的问题,还是有一些原因我应该厌倦了auto_link?

(宝石表示它意味着"弥合人们迁移的差距",这告诉我,如果我将rails_autolink引入新项目,我必须做错事,不是吗?)

谢谢,

ruby-on-rails-3.1 autolink

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

资源嵌套是启用多个动态段的唯一方法吗?

这似乎表明答案是肯定的:

从Ember Pre1到Pre4:每条路线有多个动态段?更新:动态细分的允许语法是什么?

......但我只是想确认一下.

就我而言,作为一个学习练习,我在Ember建立一个日历,每月显示.我需要能够从给定的月份链接到上个月,然后到下个月.

所以我希望能够

{{ linkTo calendar_month year month }}
Run Code Online (Sandbox Code Playgroud)

this.transitionTo('calendarMonth', year, month)
Run Code Online (Sandbox Code Playgroud)

想知道如果不使用嵌套资源这是否可行.我可以使用类似的东西:

App.Router.map(function() {
  this.resource("year", { path: "calendar/:year" }, function() {
    this.resource("calendar_month", { path: "/:month" }, function() {
      this.route('index');
    });
  });
});
Run Code Online (Sandbox Code Playgroud)

...但这涉及从建模角度引入一个可能不需要存在的Year对象,这样我就可以在linkTo中使用它的id

我更愿意设置一个包含两个参数/动态段的路线:

App.Router.map(function() {
  this.route('calendar_month', { path: 'calendar/:year/:month'});
});
Run Code Online (Sandbox Code Playgroud)

但我是否正确,这是不可能的?我只是想确保我这样做是最干净,最愚蠢的方式.

换一种方式:

我理解这个概念"如果您的用户界面是嵌套的,那么您的路由应该嵌套",但是,如果我的网址是嵌套的,这并不一定意味着我的界面也会嵌套.所以我想知道:如果我的网址是嵌套的,那么构建相应的嵌套模型总是最佳做法吗?

任何指导/澄清非常感谢.

谢谢,

ember.js ember-router

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

子模型(或资源)如何从模型钩子中访问父资源的模型?

似乎在嵌套路由的情况下,model在调用任何setupController钩子之前调用每个路径的钩子.那么孩子如何安全地访问父母的模型呢?

就我而言,模型实际上并不是持久化实体.它们都是基于params在模型钩子中生成的.所以我不认为Parent.find()/ ajax/promise似乎是要走的路.理想情况下,父模型应该可以访问ParentController,不是吗?或者这种方法不符合最佳做法?

App.Router.map(function() {
  this.resource("parent", { path: "parent/:name" }, function() {
    this.route('child');
  });
});

App.ParentRoute = Ember.Route.extend({
  model: function(params) {
    // build a model here, based on params.
    // no asynch stuff happening, should be good to go.
    return { lastName: params.name }
  },

  setupController(controller, model) {
    controller.set('model', model);
  }
});

App.ChildRoute = Ember.Route.extend({
  model: function(params) {
    parentModel = this.controllerFor('parent').get('model');
    return {lastName: parentModel.get('name') + 'son' };

    // parent Model is null …
Run Code Online (Sandbox Code Playgroud)

ember.js ember-router

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

为什么Backbone模型会在保存时向服务器发送重复属性?

我正在编写一个练习Backbone应用程序,使用Rails后端API,我对在Backbone模型上保存的行为感到困惑.

假设一个团队有很多玩家,我想在一个POST中保存一个拥有众多玩家的团队.

所以在Rails中我有:

class Team < ActiveRecord::Base
  has_many :players
  accepts_nested_attributes_for :players
end

class Player < ActiveRecod::Base
  belongs_to :team
end
Run Code Online (Sandbox Code Playgroud)

对于骨干客户端,我有一个Player模型和一个Players集合定义(未显示)

然后是包含团队模型(注意:没有团队集合)

Demo.Models.Team = Backbone.Model.extend({
  urlRoot: '/teams',
  defaults: {
    'team_size': 12
  },
  initialize: function() {
    this.players = new Demo.Collections.Players());
  },
  toJSON: function() {
    var json = _.clone(this.attributes);
    json.players_attributes = this.players.map(function(player) {
      return player.toJSON();
    });
    return json;  
  }
}
Run Code Online (Sandbox Code Playgroud)

当我在浏览器中检查我的字符串化JSON时,一切看起来都很好:

{"team_size":12, "players_attributes":[{"name":"Fred"},{"name":"Jim" },{"name":"Mark"}]}
Run Code Online (Sandbox Code Playgroud)

检查服务器日志,重复一次顶级属性('团队大小'),一次在顶层,然后在根密钥下重复.

Started POST "/teams" for 127.0.0.1 at 2012-06-07 13:39:40 -0400
Processing by TeamsController#create as JSON
  Parameters: {
    "team_size"=>12, "players_attributes":[{"name":"Fred"},{"name":"Jim" …
Run Code Online (Sandbox Code Playgroud)

javascript ruby ruby-on-rails nested-attributes backbone.js

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

我能放弃'?' 在窗体中触发GET请求?

我想用一个按钮替换一个简单的链接以进行样式设置.使用button_to代替link_to似乎是阻力最小的路径,我至少渴望保持RESTful,这意味着在这种情况下的GET请求.

当我更换:

link_to "my_page", my_page_path
Run Code Online (Sandbox Code Playgroud)

有:

button_to "my_page", my_path_path, :method => :get
Run Code Online (Sandbox Code Playgroud)

... 有个 '?' 附加到URL的末尾.当然,这是一件小事.但有没有一种简单的方法来删除'?',因为我没有查询字符串参数?

这是一个浏览器问题,而不是一个rails问题?当然,我可以将链接设置为看起来像一个按钮,但我宁愿不...

get button ruby-on-rails-3

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

如何使用ember-rails gem为HandlebarsJS模板指定备用目录?

我有一个Rails应用程序,我在前端使用Ember.我想将与ember相关的文件在目录结构中向下移动一级,但是当我这样做时,模板不再呈现.

在应用程序的普通,vanilla,工作版本中,我的目录结构是:

./app/
  assets/
    javascripts
      application.js
      ember-app.js
      routes.js
      store.js
      models/
      controllers/
      routes/
      templates/
      views/
Run Code Online (Sandbox Code Playgroud)

with:application.js

//= require jquery
//= require jquery_ujs
//= require handlebars
//= require ember
//= require ember-data
//= require_self
//= require ember-app
App = Ember.Application.create();
Run Code Online (Sandbox Code Playgroud)

和:ember-app.js

//= require ./store
//= require_tree ./models
//= require_tree ./controllers
//= require_tree ./views
//= require_tree ./helpers
//= require_tree ./templates
//= require ./router
//= require_tree ./routes
Run Code Online (Sandbox Code Playgroud)

一切正常.但是,我想将ember-app文件和所有ember javascript代码向下移动一级,当我这样做时,模板不会渲染.(部分应用程序使用Ember,但不是整个应用程序,我正在尝试通过资产管道设置两条不同的路径.)

所需的结构是:

./app/
  assets/
    javascripts
      application.js
      embro/
        ember-app.js
        routes.js
        store.js
        models/
        controllers/
        routes/
        templates/
        views/
Run Code Online (Sandbox Code Playgroud)

with:application.js(修订版:'require …

ruby-on-rails asset-pipeline handlebars.js ember.js ember-rails

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

有没有简单的方法为Meteor应用程序设置HTTP基本身份验证?

我有一个简单的Meteor应用程序演示,我想部署,但我希望它受密码保护.不需要个人用户帐户 - 现在只需一个登录/ pword即可.

有什么建议?我意识到Meteor在积极开发中有一个auth分支,所以不久之后就会有一个全功能的解决方案.但如果有人能建议短期阻力最小的道路,我将不胜感激.

谢谢

basic-authentication meteor

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

如何防止SKSpriteNode的子进程与其父进程一起旋转?

我正在使用SpriteKit编写一个涉及许多标记球的iOS游戏.我正在通过构建一个包含2个子节点的父SKSpriteNode构建这些'rollingBalls':

a)SKShapeNode(实际圆形)

b)和SKLabelNode(标签)

球将在整个屏幕上移动,彼此之间以及其他物体在2维中相互作用,并且完全取决于预期的物理(想想台球).但是,如果可能的话,我希望标签不与父母一起旋转,这样它在任何时候都很容易阅读.

最简单的方法是什么?

标签不应该是容器的孩子吗?还有其他方法可以将它钉在球形状上吗?或者我可以在标签上设置一些属性等等?

这就是我现在所拥有的:

double ballDiameter = 40;
UIBezierPath* ovalPath = [UIBezierPath bezierPathWithOvalInRect: 
                            CGRectMake(-ballDiameter / 2, -ballDiameter / 2, 
                                        ballDiameter, ballDiameter)];

SKSpriteNode *container = [[SKSpriteNode alloc]init];

container.name = @"rollingBall";

SKShapeNode *ballShape = [[SKShapeNode alloc] init];
ballShape.path = ovalPath.CGPath;

SKLabelNode *ballLabel = [SKLabelNode labelNodeWithFontNamed:@"Arial"];
ballLabel.text = @"some random string";
ballLabel.horizontalAlignmentMode = SKLabelHorizontalAlignmentModeCenter;
ballLabel.verticalAlignmentMode = SKLabelVerticalAlignmentModeCenter;
ballLabel.position = CGPointMake(0,0);

[container addChild:ballShape];
[container addChild:ballLabel];

container.physicsBody = [SKPhysicsBody bodyWithCircleOfRadius:ballDiameter / 2];
container.physicsBody.usesPreciseCollisionDetection = YES;
Run Code Online (Sandbox Code Playgroud)

rotation ios sprite-kit skphysicsbody

5
推荐指数
3
解决办法
4007
查看次数

你如何隐藏SpriteKit游戏的状态栏?

我正在使用SpriteKit为iOS编写游戏.我想游戏是全屏,没有状态栏等.如何隐藏状态栏?

objective-c fullscreen statusbar ios sprite-kit

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

如何使用Minitest测试Rails路由?

我正在尝试将Minitest用于现有的Rails应用程序(3.2),但没有运气路由测试.我已经尝试过rspec语法(应该是route_to)和TestUnit语法(assert_routing),但没有运气.

有什么建议让这个工作?我需要包含的具体模块等?

谢谢

routing ruby-on-rails minitest

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

SKNode子类应该如何与父场景和兄弟节点进行通信?

当事件发生时,SKNode子类应该如何通知父场景?

我有一个SKNode子类,通过根据游戏逻辑重新绘制或删除节点来处理触摸事件.用于通知事件发生的父场景(或其他兄弟SKNode实例)的iOS最佳实践是什么?我应该使用NSNotification中心吗?某种形式的授权?我想避免紧耦合.我可以想到几种方法来完成它,但想知道是否有标准做法,因为似乎有非游戏MCV iOS设计(例如NSNotification用于模型之间的通信,或模型 - >控制器,委托或目标 - 视图操作 - >控制器等)

从概念上讲,我喜欢SKNode子类基本上服务于"视图"角色,解释触摸事件,然后将"语义"游戏信息传递给包含场景或其他节点的想法.

// SampleScene.m

#include "SampleScene.h"
#include "SampleBallNode.h"

@implementation SampleScene
- (void)didMoveToView:(SKView *)view {
  if (!self.contentCreated) {
    [self createSceneContents];
    self.contentCreated = YES;
  }
}

- (void)createSceneContents {
  self.backgroundColor = [SKColor whiteColor];
  self.scaleMode = SKSceneScaleModeAspectFit;
  [self addBall];
}

- (void)addBall {
  SampleBallNode *ball = [[SampleBallNode alloc] init];
  ball.position = CGPointMake(100, 100);
  [self addChild:ball];
}

@end

// SampleBallNode.m

#include "SampleBallNode.h"

- (id)init {
  if ([super init]) {
    self.name = @"ball";
    self.userInteractionEnabled = YES;
    [self …
Run Code Online (Sandbox Code Playgroud)

objective-c ios sprite-kit

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