我有一个选民模型加入的用户和问题.用户可以对问题进行投票.他们可以向上或向下投票(在选民模型中记录).首先,我希望能够阻止用户在一个方向上投票.其次,我想让用户投反对票.因此,如果他们投了票,他们仍然可以投票,这将取代上行投票.用户永远不能对问题进行两次投票.这是我的文件:
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) 我添加了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) 在rails上使用ruby,我有一个Customer表,我希望能够添加无限属性(键值对).我不确定键/值对将是什么,所以我不知道如何做到这一点.例如,一个客户可能是:
基本上,客户可以在键/值对中拥有任意数量的属性.
我怎样才能做到这一点?
我在我的rails应用程序中使用Sidekiq一次排队50k +作业.我们的游泳池大小设置为9.
工作都是相关的,并做同样的事情.我们有另一个模型,它有一个计数器.在每个作业期间,我们检查该模型是否具有值大于200的列.如果它大于200,我们创建该模型的另一个实例,其值为0并继续作业.但是,由于我们一次运行9个作业,因此所有9个作业同时读取该列的值大于200,并且所有作业都创建新实例,这是不正确的.
解决这个问题的最佳方法是什么?我们基本上希望所有工作都能从最新的价值中读取.
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)
可以从"方向"列"发送"或"接收"消息.
我想要找到的是每天"对话"的数量,其中对话被定义为客户在一天内发送至少一条消息并接收至少一条消息(不必按此顺序),除以付费公司的数量.
如何在活动记录中获得该信息?
我一直收到错误:参数数量错误(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))具有错误的参数数量.我究竟做错了什么?
我安装了一个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) 我正在使用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 …
我有一个存储文件的应用程序,并使用拖放来上传它们.有没有办法我可以拖放下载文件到我的桌面而不必点击"下载".基本上,与拖放上传相反.
我按照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)