小编Mat*_*man的帖子

如何验证has_many的唯一性:通过连接模型?

我有一个选民模型加入的用户和问题.用户可以对问题进行投票.他们可以向上或向下投票(在选民模型中记录).首先,我希望能够阻止用户在一个方向上投票.其次,我想让用户投反对票.因此,如果他们投了票,他们仍然可以投票,这将取代上行投票.用户永远不能对问题进行两次投票.这是我的文件:

class Issue < ActiveRecord::Base
  has_many :associations, :dependent => :destroy

  has_many :users, :through => :associations

  has_many :voterships, :dependent => :destroy
  has_many :users, :through => :voterships

  belongs_to :app

  STATUS = ['Open', 'Closed']

  validates :subject, :presence => true,
                      :length => { :maximum => 50 }
  validates :description, :presence => true,
                          :length => { :maximum => 200 }
  validates :type, :presence => true
  validates :status, :presence => true

  def cast_vote_up!(user_id, direction)
    voterships.create!(:issue_id => self.id, :user_id   => user_id,
                                             :direction => direction)
  end
end


class …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails

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

Twitter bootstrap rails - 找不到生成器

我添加了twitter-bootstrap-railsgem并进行了bundle安装.然后我去做:

rails g bootstrap:install
Run Code Online (Sandbox Code Playgroud)

这似乎不起作用,并说它找不到发电机.

Could not find generator bootstrap:install.
Run Code Online (Sandbox Code Playgroud)

我在轨道上3.1.为什么这不起作用?

编辑:嘿不确定你是否想要整个gemfile,但这里是:

source 'http://rubygems.org'

gem 'rails', '3.1.0'
gem 'sorcery'
gem 'heroku'
gem 'will_paginate'
gem "pg", :group => :production
gem 'sqlite3'
gem 'acts_as_api'
gem 'taps'
gem 'twitter-bootstrap-rails'


# Bundle edge Rails instead:
# gem 'rails',     :git => 'git://github.com/rails/rails.git'

# Gems used only for assets and not required
# in production environments by default.
group :assets do
  gem 'sass-rails', "  ~> 3.1.0"
  gem 'coffee-rails', "~> 3.1.0"
  gem 'uglifier'
end

gem …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails twitter-bootstrap

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

ActiveRecord模型的无限任意属性(键/值对)

在rails上使用ruby,我有一个Customer表,我希望能够添加无限属性(键值对).我不确定键/值对将是什么,所以我不知道如何做到这一点.例如,一个客户可能是:

  • 客户1属性:
    • 颜色:'黄色'
    • 品牌:'nike'
    • 销售额:'33'
  • 客户2属性:
    • 红色'
    • phone_number:'1111111111'
    • 购买:'2'

基本上,客户可以在键/值对中拥有任意数量的属性.

我怎样才能做到这一点?

activerecord ruby-on-rails entity-attribute-value

8
推荐指数
2
解决办法
1860
查看次数

使用Sidekiq的并发性导致了一些问题

我在我的rails应用程序中使用Sidekiq一次排队50k +作业.我们的游泳池大小设置为9.

工作都是相关的,并做同样的事情.我们有另一个模型,它有一个计数器.在每个作业期间,我们检查该模型是否具有值大于200的列.如果它大于200,我们创建该模型的另一个实例,其值为0并继续作业.但是,由于我们一次运行9个作业,因此所有9个作业同时读取该列的值大于200,并且所有作业都创建新实例,这是不正确的.

解决这个问题的最佳方法是什么?我们基本上希望所有工作都能从最新的价值中读取.

ruby-on-rails sidekiq

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

我如何获得这个复杂的查询?

company has_many customers
customer has_many messages
customer belongs_to company
company has_many messages
message belongs_to company
message belongs_to customer
Run Code Online (Sandbox Code Playgroud)

可以从"方向"列"发送"或"接收"消息.

我想要找到的是每天"对话"的数量,其中对话被定义为客户在一天内发送至少一条消息并接收至少一条消息(不必按此顺序),除以付费公司的数量.

如何在活动记录中获得该信息?

activerecord ruby-on-rails

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

尝试销毁实例时,参数数量错误(1表示0)

我一直收到错误:参数数量错误(1表示0)

def destroy
    @event = Event.find(params(:id))
    @event.destroy
    flash[:success] = "Event destroyed."
    redirect_to events_path
end
Run Code Online (Sandbox Code Playgroud)

我试图破坏@event并且它不起作用,因为@event = Event.find(params(:id))具有错误的参数数量.我究竟做错了什么?

ruby-on-rails

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

rails app没有在heroku上找到fontawesome图标

我安装了一个bootstrap主题,一切都在本地运行良好.但是,当我去推送到heroku时,我的应用程序找不到字体.我预编译资产并推送到heroku,但没有图标.

所以,我在developer.rb中使用以下内容创建了像heroku这样的开发环境:

  config.assets.debug = true

  # Disable Rails's static asset server (Apache or nginx will already do this).
  config.serve_static_assets = true

  # Compress JavaScripts and CSS.
  config.assets.js_compressor = :uglifier
  # config.assets.css_compressor = :sass

  # Do not fallback to assets pipeline if a precompiled asset is missed.
  config.assets.compile = false

  # Generate digests for assets URLs.
  config.assets.digest = true
Run Code Online (Sandbox Code Playgroud)

现在,我的开发环境找不到字体文件.字体文件位于两个位置:

app/assets/fonts/fontawesome-webfont.*
public/assets/fontawesome-webfont.*
Run Code Online (Sandbox Code Playgroud)

但是,我收到此错误:

ActionController::RoutingError (No route matches [GET] "/assets/fontawesome-webfont.svg"):
Run Code Online (Sandbox Code Playgroud)

这是从预编译的css文件(application-xxxxxxxxx.css)加载它们的方式:

@font-face {
  font-family: 'FontAwesome';
  src: url('fontawesome-webfont.eot?v=4.0.3');
  src: url('fontawesome-webfont.eot?#iefix&v=4.0.3') format('embedded-opentype'), url('fontawesome-webfont.woff?v=4.0.3') format('woff'), …
Run Code Online (Sandbox Code Playgroud)

css ruby-on-rails heroku twitter-bootstrap

6
推荐指数
2
解决办法
8069
查看次数

即使before_save将其设置为nil,也会设置值

我正在使用aasm_state gem和sidekiq.以下是customer.rb对aasm_state定义的看法:

  aasm do
    state :closed, initial: true
    state :open
    state :claimed

    event :open do
      transitions from: :closed, to: :open
    end

    event :claim do
      transitions from: [:open, :closed], to: :claimed
    end

    event :close do
      transitions from: [:open, :claimed], to: :closed
      before do
        self.user_id = nil
      end
    end
  end
Run Code Online (Sandbox Code Playgroud)

然后我也在customer.rb:

  def properly_close
    if closed? && user_id
      Rails.logger.info "Bad customer state with customer_id: #{id} at #{Time.now} and the last message was at #{messages.last.created_at}. Aasm_state_was: #{aasm_state_was}"
      self.user_id = nil
    end
  end
Run Code Online (Sandbox Code Playgroud)

每当aasm_state =='关闭'时,客户端永远不应该有user_id.但是,它仍然经常发生.我认为它与sidekiq作业并行有关,但我不确定.即使我有两种方法可以确保user_id …

activerecord ruby-on-rails sidekiq

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

是否可以将文件从浏览器拖放到桌面,导致下载?

我有一个存储文件的应用程序,并使用拖放来上传它们.有没有办法我可以拖放下载文件到我的桌面而不必点击"下载".基本上,与拖放上传相反.

javascript php jquery drag-and-drop

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

单击"注销"时,Activeadmin不会注销

我按照railscast的说明安装activeadmin.安装后,我遇到两个错误 -

1)sign_in的args数量无效 - 所以我将sign_in方法重命名为sign_in_user并解决了这个问题.

然后

2)signed_in的args数无效? - 所以我重命名了我的signed_in?is_signed_in的方法?并解决了这个问题.

现在一切似乎都有效,除非我单击activeadmin中的注销按钮,它表示"已成功注销",但注销按钮仍然位于顶角,并且没有将我注销.

我根据有类似问题的人的建议,将这两件事添加到我的active_admin.rb文件中:

config.logout_link_path = :destroy_admin_user_session_path
Run Code Online (Sandbox Code Playgroud)

和

config.logout_link_method = :delete
Run Code Online (Sandbox Code Playgroud)

但仍然没有运气.这是我的佣金路线:

     admin_dashboard        /admin(.:format)                               {:action=>"index", :controller=>"admin/dashboard"}
            admin_comments GET    /admin/comments(.:format)                      {:action=>"index", :controller=>"admin/comments"}
            admin_comments POST   /admin/comments(.:format)                      {:action=>"create", :controller=>"admin/comments"}
         new_admin_comment GET    /admin/comments/new(.:format)                  {:action=>"new", :controller=>"admin/comments"}
        edit_admin_comment GET    /admin/comments/:id/edit(.:format)             {:action=>"edit", :controller=>"admin/comments"}
             admin_comment GET    /admin/comments/:id(.:format)                  {:action=>"show", :controller=>"admin/comments"}
             admin_comment PUT    /admin/comments/:id(.:format)                  {:action=>"update", :controller=>"admin/comments"}
             admin_comment DELETE /admin/comments/:id(.:format)                  {:action=>"destroy", :controller=>"admin/comments"}
    new_admin_user_session GET    /admin/login(.:format)                         {:action=>"new", :controller=>"active_admin/devise/sessions"}
        admin_user_session POST   /admin/login(.:format)                         {:action=>"create", :controller=>"active_admin/devise/sessions"}
destroy_admin_user_session DELETE /admin/logout(.:format)                        {:action=>"destroy", :controller=>"active_admin/devise/sessions"}
       admin_user_password POST   /admin/password(.:format)                      {:action=>"create", :controller=>"active_admin/devise/passwords"}
   new_admin_user_password GET …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails activeadmin

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