小编Tyl*_*itt的帖子

Rails:ActiveRecord的default_scope和类继承

我的应用不仅有用户,还有管理员和超级管理员.由于所有三个共享相同的属性,我只想使用一个具有附加属性"角色"的表,可以是"user","admin"或"super_admin":

class User < ActiveRecord::Base
 # with nickname and password
end


class Admin < User

  def power
    puts "admin rights"
  end
end


class SuperAdmin < Admin

  def superpower
    puts "I've got the #{power}!"
  end
end
Run Code Online (Sandbox Code Playgroud)

现在我想做一些事情SuperAdmin.all,只得到SuperAdmins.使用default_scope似乎让我在那里:

class SuperAdmin < Admin
  default_scope where(["role = ?", "super_admin"])

  # ...
end
Run Code Online (Sandbox Code Playgroud)

现在我也将一个default_scope添加到Admin:

class Admin < User
  default_scope where(["role = ?", "admin"])

  # ...
end
Run Code Online (Sandbox Code Playgroud)

Aaaand ... SuperAdmin.all不再返回任何内容.这是为什么?

inheritance activerecord default-scope ruby-on-rails-3.2

5
推荐指数
2
解决办法
2269
查看次数

为什么自定义TableViewCell不需要文件所有者?

我试图在Interface Builder中创建一个自定义的UITableViewCell,并将实际UITableViewCell的File的Owner和Custom Class设置为我的新自定义UITableViewCell类.我会从文件所有者那里挂起IBOutlets并在遇到错误时得到错误:

 TVCell *cell = (TVCell *) [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {

    NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"TVCell" owner:nil options:nil];

    for(id currentObject in topLevelObjects)
    {
        if([currentObject isKindOfClass:[TVCell class]])
        {
            cell = (TVCell *)currentObject;
            break;
        }
    }
Run Code Online (Sandbox Code Playgroud)

最后我意识到你必须从UITableViewCell对象而不是文件所有者那里连接IBOutlets.为什么是这样?

谢谢

iphone cocoa-touch interface-builder uitableview ios

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

iOS电话簿中的垂直字母是什么?

是一个小的垂直字母表,它允许您跳过iOS联系人管理器中的选定字母,某个类型的内置视图,还是自定义视图和委托方法的一些奇怪的混合?

谢谢

iphone uitableview addressbook ios

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

如何在下拉列表淘汰赛中预先选择一个选项

我已经看过这个其他问题,但无法让我的选择框正常工作: 绑定下拉列表(选择)列表的初始/默认值

我有以下Game对象:

function Game(visitingTeamDetails, homeTeamDetails, game) {
if (arguments.length > 0) {
    this.VisitingTeamDetails = visitingTeamDetails;

    this.HomeTeamDetails = homeTeamDetails;

    this.GameId = ko.observable(game.GameId);
    this.HomeTeamName = ko.observable(game.HomeTeamName);
    this.VisitingTeamName = ko.observable(game.VisitingTeamName);
    this.SportTypeName = ko.observable(game.SportTypeName);
    this.HomeAccountName = ko.observable(game.HomeAccountName);
    this.VisitingAccountName = ko.observable(game.VisitingAccountName);
    this.GameDateString = ko.observable(game.GameDateString);
    this.GameTimeString = ko.observable(game.GameTimeString);
    this.AvailableSportTypes = ko.observableArray(game.Sports);

    this.sportTypeFunction = function () {
        for (sportType in this.AvailableSportTypes()) {
            if (this.AvailableSportTypes()[sportType].Name == this.SportTypeName()) {
                return this.AvailableSportTypes()[sportType];
            }
        }
        return null;
    };

    this.SportType = ko.observable(game.SportType);
}
}
Run Code Online (Sandbox Code Playgroud)

SportType是与对象NameSportTypeId.

我有以下模板:

 <td …
Run Code Online (Sandbox Code Playgroud)

data-binding select initialization knockout.js

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

bash <<(curl -s https://rvm.io/install/rvm):它做了什么?

可能重复:
这是什么意思"bash <<(curl rvm.io/releases/rvm-install-head)"

我正在努力在Mac OS X上安装Ruby on Rails,并且遇到了几个调用此行的教程:

bash < <(curl -s https://rvm.io/install/rvm)
Run Code Online (Sandbox Code Playgroud)

我不知道这bash < <是什么意思.

这条线做什么?

谢谢

bash curl ruby-on-rails

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

为什么postgreSQL将十进制字段存储为BigDecimal哈希?

我在rails3/postgreSQL中有以下模型/表:

create_table "admin_reports", :force => true do |t|
  t.string   "report"
  t.decimal  "result"
  t.string   "result_type"
  t.datetime "created_at"
  t.datetime "updated_at"
end
Run Code Online (Sandbox Code Playgroud)

在生产时,AdminReports.result不存储小数,而是存储哈希:

AdminReport.last

=> #<AdminReport id: 4, report: "dau", result: #<BigDecimal:cbca0f0,'0.8E1',4(8)>, result_type: "percentage", created_at: "2012-02-28 22:05:15", updated_at: "2012-02-28 22:05:15">
Run Code Online (Sandbox Code Playgroud)

我希望看到的地方:

AdminReport.last

=> #<AdminReport id: 4, report: "dau", result: 10.10, result_type: "percentage", created_at: "2012-02-28 22:05:15", updated_at: "2012-02-28 22:05:15">
Run Code Online (Sandbox Code Playgroud)

在rails控制台中,即使我尝试手动设置结果字段,如下所示:

@a = AdminReport.last
@a.result = 8.89
@a.save
Run Code Online (Sandbox Code Playgroud)

它仍然将AdminReport.result显示为BigDecimal哈希.有什么想法在这里发生了什么?

谢谢

postgresql ruby-on-rails ruby-on-rails-3

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

Chrome未显示更新的页面

我正在研究Rails应用程序并正在更新页面.

该页面有一大堆在css中定义的背景图像.当我刷新页面(cmd+r在Mac上)时,没有任何改变.当我进入Chrome检查器并取消选中然后重新检查css规则时,图像出现了.此外,如果我打开一个新的私人浏览窗口(cmd+shift+n),图像都会正确显示.

我遇到了一些奇怪的缓存问题吗?

Chrome:版本21.0.1180.89

Mac OS X:10.8.2

css macos caching google-chrome image

4
推荐指数
2
解决办法
8204
查看次数

rake db:仅创建创建开发数据库

我正在开始一个新的rails 3应用程序,当我运行rake db:create它请求我的root mysql密码然后错误说:

Mysql2 ::错误:用户'arcsite_mysql'@'localhost'拒绝访问数据库'arcsite_mysql_test':CREATE DATABASE arcsite_mysql_testDEFAULT CHARACTER SET utf8COLLATEutf8_unicode_ci

如果我在命令行登录mysql并运行show databases;我看到:

arcsite_mysql_development
Run Code Online (Sandbox Code Playgroud)

如果我跑,SHOW GRANTS FOR arcsite_mysql@localhost我看到这个:

GRANT ALL PRIVILEGES ON `arcsite_mysql_development`.* TO 'arcsite_mysql'@'localhost' WITH GRANT OPTION 
Run Code Online (Sandbox Code Playgroud)

我的database.yml:

# MySQL.  Versions 4.1 and 5.0 are recommended.
#
# Install the MYSQL driver
#   gem install mysql2
#
# Ensure the MySQL gem is defined in your Gemfile
#   gem 'mysql2'
#
# And be sure to use new-style password hashing: …
Run Code Online (Sandbox Code Playgroud)

mysql rake ruby-on-rails mysql2

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

使用POST In Rails进行持久/保持活动的HTTP连接

有没有办法在rails中维护/使用POST命令的持久连接?

我想创建一个API,我的应用程序接受来自外部服务的数据流(我正在编写这个外部服务,所以我可以灵活地设计我的设计).速度至关重要.我需要以每秒1000点以上的速度从外部源获取信息.与一些计算机科学家交谈时,人们提出了使用持久连接的想法,这样昂贵的TCP握手只需要执行一次.使用外部服务中的库,然后我将创建多个POST项目,这些项目被推送到我的rails应用程序中,然后逐个处理这些POST项目.

我对rails范例的理解是每个请求(POST,GET,PUT等)都需要一个TCP连接.有没有办法利用一个TCP连接获得多个POST?

我目前正在使用以下内容:

  • Rails 3.2
  • Ruby 1.9.3(必要时可以切换到2.0)

编辑

为了帮助澄清我的目标:

我有一个外部系统,每秒收集1,000个数据点(3个浮点数,一个时间戳和2个整数).我想将这些数据推送到我的Ruby on Rails服务器上.我希望配置正确的系统我可以实时使用HTTP堆栈(收集数据点后,我将其推送到我的rails服务器).我还可以降低传输速率并将数据点组合在一起发送它们.我已经看过使用消息传递队列,但我想看看在转到专门的队列API之前是否可以编写更"标准"的HTTP API.

post ruby-on-rails http stream keep-alive

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

OpenLayers 3禁用多选

有没有办法selectInteraction在OpenLayers 3中只允许一次选择一个功能?

openlayers-3

4
推荐指数
2
解决办法
1415
查看次数