我有一个fd描述符,我可以通过调用来读取它read(fd, buffer,...).现在,我想在实际拨打电话之前检查是否有任何内容需要阅读,因为呼叫是阻塞的.我该怎么做呢?
这是我在rails 3.2.2中的迁移:
class CreateStatistics < ActiveRecord::Migration
def change
create_table :statistics do |t|
t.string :name
t.integer :item_id
t.integer :value
t.text :desc
t.timestamps
t.index [:name, :item_id]
end
end
end
Run Code Online (Sandbox Code Playgroud)
这是迁移错误:
== CreateStatistics: migrating ===============================================
-- create_table(:statistics)
ActiveRecord::ConnectionAdapters::TableDefinition
rake aborted!
An error has occurred, all later migrations canceled:
undefined method `index' for #<ActiveRecord::ConnectionAdapters::TableDefinition:0xbd16888>
Tasks: TOP => db:migrate
(See full trace by running task with --trace)
Run Code Online (Sandbox Code Playgroud)
什么是创建索引的正确方法?
我想做的事情如下:
var myArray = ["one","two","three"];
document.write(myArray.splice(1,1));
document.write(myArray);
Run Code Online (Sandbox Code Playgroud)
因此它首先显示"一,三",然后是"一,二,三".我知道splice()返回被删除的元素并更改数组,但是是否有函数返回一个删除了元素的新数组?我试过了:
window.mysplice = function(arr,index,howmany){
arr.splice(index,howmany);
return arr;
};
Run Code Online (Sandbox Code Playgroud)
如果我尝试:
var myArray = ["one","two","three"];
document.write(mySplice(myArray,1,1));
document.write(myArray);
Run Code Online (Sandbox Code Playgroud)
它仍然会改变myArray ......
请帮忙.
在rails中,我可以通过controller_name获取当前控制器的名称,并通过调用action_name获取当前操作.我正在寻找类似的运行时反射来获取以下内容:
例如,我是一个具有"添加"和"编辑"操作的产品控制器.我是否可以通过编程方式提取这些操作的名称以向用户显示支持哪些操作?
我已经看过一个需要使用的方法,ActionController::Routing::Routes.named_routes.routes.each
但我无法让它工作.ActionDispatch::Routing::Routes当我使用它时,我得到了未初始化的常量错误.
如果有任何好的教程或文档可以帮助我理解rails反射功能.我搜索了它,但我主要是积极的记录反射相关的博客.我正在寻找能让我在运行时获取有关控制器和操作/方法的信息的东西.
谢谢,
Tabrez
在ruby 1.9.x中,我们可以指定编码File.open('filename','r:iso-8859-1').如果我直接将许多短文件读入字符串,我通常更喜欢使用单行File.read().有没有办法可以直接指定编码,或者我是否必须采用以下方法之一?
str = File.read('filename')
str.force_encoding('iso-8859-1')
Run Code Online (Sandbox Code Playgroud)
要么
f = File.open('filename', 'r:iso-8859-1')
s = ''
while (line = f.gets)
s += line
end
f.close
Run Code Online (Sandbox Code Playgroud) 例:
var arr = [{name: 'a', age: 23}, {name: 'b', age: 24}]
var newArr = _.enhance(arr, { married : false });
console.log(newArr); // [{name: 'a', age: 23, married : false}, {name: 'b', age: 24, married : false}]
Run Code Online (Sandbox Code Playgroud)
我正在寻找能做到这一点的事情.注意,lodash中不存在增强功能.用lodash可以做到这一点吗?
如果不是 - 可能添加?
谢谢,
我有一个大约100个用户的表,我也有一个用户ID数组.我想要做的是显示所有不属于此用户ID数组的用户.当我做这样的事情
User.where('id NOT IN (?)', [9, 2, 3, 4])
Run Code Online (Sandbox Code Playgroud)
它成功返回用户id不属于该数组的记录.但是,如果该数组是空的,那么
User.where('id NOT IN (?)', [])
Run Code Online (Sandbox Code Playgroud)
它不会返回任何用户,SQL查询看起来像这样
SELECT "users".* FROM "users" WHERE (id NOT IN (NULL))
Run Code Online (Sandbox Code Playgroud)
有谁知道为什么会发生这种情况或者这可能是一个错误?我正在使用Rails 3.2.5和PostgreSQL.
当您覆盖骨干同步时,模型/集合.save()/ fetch()都使用相同的骨干同步方法,那么检查Backbone.sync接收的模型或模型集合的最佳方法是什么?
举个例子:
Backbone.sync = function(method, model, options){
//Model here can be both a collection or a single model so
if(model.isModel()) // there is no isModel or isCollection method
}
Run Code Online (Sandbox Code Playgroud)
我想我正在寻找一个"安全"的最佳实践,我当然可以检查某些属性或方法,只有模型或集合有,但似乎是hackish,不应该有更明显的方法吗?而且我可能找不到它.
谢谢!
试图在define_method里面使用initialize但得到undefined_method define_method.我究竟做错了什么?
class C
def initialize(n)
define_method ("#{n}") { puts "some method #{n}" }
end
end
C.new("abc") #=> NoMethodError: undefined method `define_method' for #<C:0x2efae80>
Run Code Online (Sandbox Code Playgroud) javascript ×3
ruby ×3
activerecord ×1
arel ×1
arrays ×1
backbone.js ×1
c ×1
controller ×1
encoding ×1
file ×1
hash ×1
hashrocket ×1
lodash ×1
methods ×1
postgresql ×1
reflection ×1
syntax ×1
unix ×1