小编Ada*_*NYC的帖子

如何在Rails中将参数传递给委托方法

我想有一个仪表板来显示多个模型的摘要,我使用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的实例方法重写为带参数的类方法.但这些解决方案都是黑客攻击).

谢谢.

model-view-controller ruby-on-rails presenter activemodel

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

为什么使用数字键进行子集化不适用于data.table

我有一个包含两个数字行的表,其中一行设置为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 data.table

13
推荐指数
2
解决办法
1386
查看次数

是什么导致我的经过时间比用户时间长?

我正在对一些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)

谢谢

performance r

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

仪表板的Rails控制器设计模式

我想有一个仪表板页面,可以将多个模型中的信息收集到摘要视图中(没有自己的模型).我应该如何处理Rails方式呢?我应该只使用索引操作创建一个dashboard_controller吗?

谢谢.

model-view-controller dashboard controller ruby-on-rails

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

如何在ifelse语句中忽略NA

我从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设置为''(空白).

谢谢.

r conditional-statements

9
推荐指数
2
解决办法
3万
查看次数

如何在Rails中的Model方法中获取url_for对象

我想创建一个包含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)

我该怎么办呢?另外,如何使路径成为超链接?

非常感谢.

url ruby-on-rails actionmailer

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

使用Meteor.js和MongoDB进行全文搜索

我正在试验Meteor.js并寻找可以在Meteor/MongoDB服务器上运行的全文搜索引擎.似乎Meteor还没有开发出这个功能.

我想知道是否有一个现有的解决方案可以添加全文搜索到Meteor应用程序.

我唯一能找到的是MongoLantern,它有node.js API.我应该如何将MongoLantern添加到我的Meteor应用程序中?

mongodb meteor

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

在Devise Rails中关闭警报消息

我正在使用Devise for my Rails 3应用程序.

如何成功关闭Devise的警报消息以进行登录/注销?

alert ruby-on-rails devise

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

data.table中键的顺序是否重要?

我有一个data.table,它有两个键:Year(10个级别)和MemberID(200,000个级别).当我使用setkey时,会setkey(MemberID, Year)产生不同的性能setkey(Year, MemberID)吗?如果是这样,哪种方式会更好?

r data.table

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

SendGrid与ActionMailer对邮件服务器

我正在构建具有以下功能的Rails应用程序:从用户接收电子邮件时,解析内容,执行某些任务并向用户发送更新电子邮件,并且延迟较低.

对于接收电子邮件,我有MailMan gem.为了发送电子邮件,我有ActionMailer.对于邮件服务器,我使用的是Gmail和Pop3.

似乎SendGrid是电子邮件的热门之物.我很难理解SendGrid在ActionMailer之外的作用.SendGrid是一个SMTP电子邮件服务器,也是我的Gmail Pop3的替代品吗?它处理传入的电子邮件吗?

与ActionMailer相比有哪些优势?

ruby-on-rails actionmailer sendgrid

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