我想有一个仪表板来显示多个模型的摘要,我使用Presenter实现它而没有自己的数据.我使用ActiveModel类(没有数据表):
class Dashboard
attr_accessor :user_id
def initialize(id)
self.user_id = id
end
delegate :username, :password, :to => :user
delegate :address, :to => :account
delegate :friends, :to => :friendship
end
Run Code Online (Sandbox Code Playgroud)
通过代表,我希望能够打电话Dashboard.address回来Account.find_by_user_id(Dashboard.user_id).address.
如果Dashboard是一个ActiveRecord类,那么我可以声明Dashboard#belongs_to :account并且委托会自动工作(即,Account会知道它应该从Dashboard实例中的user_idequals 返回地址属性to user_id).
但Dashboard不是ActiveRecord类,所以我不能声明belongs_to.我需要另一种方法来告诉Account查找正确的记录.
有办法克服这个问题吗?(我知道我可以假装Dashboard有一个空表,或者我可以将User的实例方法重写为带参数的类方法.但这些解决方案都是黑客攻击).
谢谢.
我有一个包含两个数字行的表,其中一行设置为key.我想data.table通过数字键值对我进行子集化,但它似乎不起作用.当我将它转换为字符时,它的工作原理.
你能帮我理解为什么吗?我正在使用data.table 1.8.6.
谢谢一堆.这是测试代码:
> ID <-c(rep(210, 9), rep(3917,6))
> Count <- c(1,1,0,1,1,1,1,1,1,1,1,1,1,0,1)
> x <- data.table(ID, Count)
>
> # numeric key doesn't work with i argument
> setkey(ID)
[1] 210 210 210 210 210 210 210 210 210 3917 3917 3917 3917 3917 3917
> x[210,list(ID, Count)]
ID Count
1: NA NA
>
> # create character key
> x$charID <- as.character(x$ID)
> setkey(x, charID)
> x["210",list(ID, Count)]
charID ID Count
1: 210 210 1
2: …Run Code Online (Sandbox Code Playgroud) 我正在对一些R语句进行基准测试(详见此处),发现我的经过时间比用户时间长.
user system elapsed
7.910 7.750 53.916
Run Code Online (Sandbox Code Playgroud)
有人可以帮助我了解哪些因素(R或硬件)决定用户时间和经过时间之间的差异,以及我如何改进它?如果有帮助:我在带有4GB RAM的Macbook Air 1.7Ghz i5上运行data.table数据操作.
更新:我粗略的理解是用户时间是我的CPU处理我的工作所需的时间.经过的时间是我提交作业到获取数据的长度.处理8秒后我的电脑还需要做什么?
更新:正如评论中所建议的,我在两个data.table上运行了几次:Y,有104列(抱歉,我随着时间的推移添加了更多列),而X作为Y的子集只有3个键.以下是更新.请注意,我连续运行了这两个程序,因此内存状态应该类似.
X<- Y[, list(Year, MemberID, Month)]
system.time(
{X[ , Month:= -Month]
setkey(X,Year, MemberID, Month)
X[,Month:=-Month]}
)
user system elapsed
3.490 0.031 3.519
system.time(
{Y[ , Month:= -Month]
setkey(Y,Year, MemberID, Month)
Y[,Month:=-Month]}
)
user system elapsed
8.444 5.564 36.284
Run Code Online (Sandbox Code Playgroud)
以下是我工作区中仅有两个对象的大小(添加了逗号).:
object.size(X)
83,237,624 bytes
object.size(Y)
2,449,521,080 bytes
Run Code Online (Sandbox Code Playgroud)
谢谢
我想有一个仪表板页面,可以将多个模型中的信息收集到摘要视图中(没有自己的模型).我应该如何处理Rails方式呢?我应该只使用索引操作创建一个dashboard_controller吗?
谢谢.
我从SAS来到R,数字缺失设置为无穷大.所以我们可以说:
positiveA = A > 0;
Run Code Online (Sandbox Code Playgroud)
在R中,我必须像下面这样冗长:
positiveA <- ifelse(is.na(A),0, ifelse(A > 0, 1, 0))
Run Code Online (Sandbox Code Playgroud)
我发现这种语法很难阅读.无论如何我可以修改ifelse函数来考虑NA是一个特殊值,对于所有比较条件总是假的吗?如果没有,考虑NA作为-Inf也会起作用.
同样,在字符变量的ifelse语句中将NA设置为''(空白).
谢谢.
我想创建一个包含Rails中对象路径的字符串.
def notification_content
"#{app.listing_url(my_listing, :host => "example.com")}. " +
end
Run Code Online (Sandbox Code Playgroud)
然后,此内容将作为电子邮件内容提供给我的ActionMailer.
在控制台中,它工作正常.但是,当我在localhost服务器上运行它时,我收到以下错误:
undefined local variable or method `app'
Run Code Online (Sandbox Code Playgroud)
我该怎么办呢?另外,如何使路径成为超链接?
非常感谢.
我正在试验Meteor.js并寻找可以在Meteor/MongoDB服务器上运行的全文搜索引擎.似乎Meteor还没有开发出这个功能.
我想知道是否有一个现有的解决方案可以添加全文搜索到Meteor应用程序.
我唯一能找到的是MongoLantern,它有node.js API.我应该如何将MongoLantern添加到我的Meteor应用程序中?
我正在使用Devise for my Rails 3应用程序.
如何成功关闭Devise的警报消息以进行登录/注销?
我有一个data.table,它有两个键:Year(10个级别)和MemberID(200,000个级别).当我使用setkey时,会setkey(MemberID, Year)产生不同的性能setkey(Year, MemberID)吗?如果是这样,哪种方式会更好?
我正在构建具有以下功能的Rails应用程序:从用户接收电子邮件时,解析内容,执行某些任务并向用户发送更新电子邮件,并且延迟较低.
对于接收电子邮件,我有MailMan gem.为了发送电子邮件,我有ActionMailer.对于邮件服务器,我使用的是Gmail和Pop3.
似乎SendGrid是电子邮件的热门之物.我很难理解SendGrid在ActionMailer之外的作用.SendGrid是一个SMTP电子邮件服务器,也是我的Gmail Pop3的替代品吗?它处理传入的电子邮件吗?
与ActionMailer相比有哪些优势?
r ×4
actionmailer ×2
data.table ×2
activemodel ×1
alert ×1
controller ×1
dashboard ×1
devise ×1
meteor ×1
mongodb ×1
performance ×1
presenter ×1
sendgrid ×1
url ×1