Tag: 的Ruby on 轨道

这类路线的最佳做法是什么?

我有一个belongs_to三个用户(客户,员工和qa)的Job模型。 创建作业时,客户设置为current_user ,但employee和qa用户从无人认领的作业池中选择其作业。 我目前实现此方法的方法如下: match ‘jobs/:id/assign/:type/:user_id’ => ‘jobs#assign’ ,其中assign方法带有对params[:type]的case语句。 因此,例如, jobs/1/assign/qa/1将用户1指定为作业1的qa。 这有效,但看起来很草率,我想用更干净的东西取而代之。 对于像这样的情况,有一个共同的约定吗? 编辑:用户可以同时拥有员工和qa角色。 这就是让我感到强迫进入如此复杂的路线的原因。 class User ‘Job’, :foreign_key => ‘customer_id’ has_many :assigned_jobs, :class_name => ‘Job’, :foreign_key => ’employee_id’ has_many :reviewed_jobs, :class_name => ‘Job’, :foreign_key => ‘qa_id’ class Job ‘User’, :foreign_key => ‘customer_id’ belongs_to :employee, :class_name => ‘User’, :foreign_key => ’employee_id’ belongs_to :qa, :class_name => […]

多对多的多态关联

我不知道如何创建它,我想创建一个多对多的多态关联。 我有一个question模型,属于一家company 。 现在问题可能是has_many users , groups或company 。 取决于您如何分配它。 我希望能够将问题分配给一个/多个用户,或一个/多个组,或者它所属的公司。 我该怎么做呢?

如何在不渲染或重定向的情况下显示消息(也称为闪存)

表单提交后,我的控制器检查是否有一些条件 就我而言,有三个: 如果用户最大限度地利用对象跟踪的可能性 如果用户已经跟踪此对象 一切正常,请求被添加到队列中 我想告诉用户这些条件。 我有remote: true表单remote: true ,现在我通过渲染js: “alert(‘info’)”显示信息js: “alert(‘info’)”但它看起来很难看。 我不想在表单提交后将用户重定向到某个地方或重新呈现表单。 我只想显示“flash”消息并等待用户的另一个请求。 我该怎么做?

rails paperclip mysql不保存文件

附件恢复似乎工作正常,但我没有任何插入数据库(null,null,null,null),我没有文件上传到我的应用程序中的任何文件夹… class AddAttachmentCvToUsers < ActiveRecord::Migration def change change_table :users do |t| t.attachment :cv end end end 用户模型: attr_accessor :cv validates_attachment :cv has_attached_file :cv, :path=>”:rails_root/storage/#{Rails.env}#{ENV[‘RAILS_TEST_NUMBER’]}/.” 我也安装了carrierwave,但仍然没有效果..编辑:用户控制器(我没有其他附件控制器): class UsersController < ApplicationController def new @users = User.new end def create @user = User.new(user_params) if @user.save session[:user_id] = @user.id current_user = @user.id redirect_to '/status' else redirect_to '/signup' end end […]

Rails 4,elasticsearch-rails

我正在寻找关于我的应用程序的最佳前进方式的一些建议,我已经开始首次整合elasticsearch。 我是一个铁杆的初学者,但热衷于潜水,原谅任何明显的错误! 我遵循了http://www.sitepoint.com/full-text-search-rails-elasticsearch/教程,并且还通过阅读文档等实现了一些额外的elasticsearch dslfunction。我只是不相信我还在那里。 (我当然需要退出模型,因为目前大多数都在产品活动记录模型中。) 我试图在产品模型上实现搜索,具有部分单词搜索,模糊搜索(拼写错误)的能力。 根据我的理解,我能够为弹性搜索设置我自己的分析器和filter,我已经完成并且目前驻留在产品模型中。 我想将这些移动到一个更合理的位置,一旦我确定了,我确实是这样做的。 我在搜索时得到的结果,但我包括删除索引,在产品模型的最后创建一个映射的新索引,如果我在下面的内容不是“正确的方法”,那么有什么比我需要1,使用rails 2实现弹性搜索,更有效地分离关注点。 谢谢,非常感谢 码: LIB /任务/ elasticsearch.rake: require ‘elasticsearch/rails/tasks/import’ 视图: 我使用的gem: gem ‘elasticsearch-model’, git: ‘git://github.com/elasticsearch/elasticsearch-rails.git’ gem ‘elasticsearch-rails’, git: ‘git://github.com/elasticsearch/elasticsearch-rails.git’ 搜索控制器: class SearchController < ApplicationController def index if params[:query].nil? @products = [] else @products = Product.search(params[:query]) end end end 产品型号: require ‘elasticsearch/model’ class Product < ActiveRecord::Base # ElasticSearch […]

让用户使用Facebook登录或创建帐户

此时用户可以使用omniauth-facebook gem的facebook帐户登录我的网站。 我还想为用户实现一种方法,即使用类似设计的gem创建一个帐户,这样他们在发布时可以保持更加匿名。 这是我在sessions_controller中的内容 class SessionsController < ApplicationController def create user = User.from_omniauth(env["omniauth.auth"]) session[:user_id] = user.id redirect_to root_url end def destroy session[:user_id] = nil redirect_to root_url end end 然后我的用户模型 class User < ActiveRecord::Base include SessionsHelper def self.from_omniauth(auth) where(auth.slice(:provider, :uid)).first_or_initialize.tap do |user| user.provider = auth.provider user.uid = auth.uid user.name = auth.info.name user.oauth_token = auth.credentials.token user.oauth_expires_at = […]

ActiveRecord :: StatementInvalid:ArgumentError:负字符串大小(或大小太大):SELECT * FROM

我在尝试在内存中实例化太多对象时遇到此错误。 这是一个Rails 2.3.x应用程序,以SQL Server作为数据库。 >> Shop.count => 14111 >> Shop.all ActiveRecord::StatementInvalid: ArgumentError: negative string size (or size too big): SELECT * FROM [shop] from /Users/lunks/.rvm/gems/ree-1.8.7-2011.03@ums/gems/activerecord-2.3.14/ lib/active_record/connection_adapters/abstract_adapter.rb:227:in `log’ from /Users/lunks/.rvm/ gems/ree-1.8.7-2011.03@ums/gems/activerecord-sqlserver-adapter-2.3.24/lib/active_record/connection_adapters/sqlserver_adapter.rb:1004:in `raw_select’ from /Users/lunks/.rvm/gems/ree-1.8.7-2011.03@ ums/gems/activerecord-sqlserver-adapter-2.3.24/lib/active_record/connection_adapters/sqlserver_adapter.rb:965:in `select’ from /Users/lunks/.rvm/gems/ree-1. 8.7-2011.03@ums/gems/activerecord-2.3.14/lib/active_record/connection_adapters/abstract/database_statements.rb:7:in `select_all_without_query_cache’ from /Users/lunks/.rvm /gems/ree-1.8.7-2011.03@ums/gems/activerecord-2.3.14/lib/active_record/connection_adapters/abstract/query_cache.rb:62:in `select_all’ from /Users/lu nks/.rvm/gems/ree-1.8.7-2011.03@ums/gems/activerecord-2.3.14/lib/active_record/base.rb:665:in `find_by_sql’ from /Users/lunks/.rvm/gems/ree-1.8.7-2011.03@ums/gem s/activerecord-2.3.14/lib/active_record/base.rb:1582:in `find_every’ f rom /Users/lunks/.rvm/gems/ree-1.8.7-2011.03@ums/gems/activerecord-2.3.14/lib/active_record/base.rb:619:in `find’ […]

Rails演示者教程中的方法问题

关于我在本教程中看到的几种方法的问题: https : //richonrails.com/articles/rails-presenters 特别是: module ApplicationHelper def present(model, presenter_class=nil) klass = presenter_class || “#{model.class}Presenter”.constantize presenter = klass.new(model, self) yield(presenter) if block_given? end end 和 class BasePresenter < SimpleDelegator def initialize(model, view) @model, @view = model, view super(@model) end def h @view end end 本方法如何工作? 我对它的参数参数非常困惑,即model, presenter_class=nil以及整个方法。 我也对model, view参数以及哪里/什么是super(@model)方法感到困惑? 任何可以解释这些方法的信息都会非常有用,因为我一直在盯着它,同时想知道它们是如何起作用的。

Ruby on Rails ActiveRecord数据库迁移失败

我有一个预先存在的sqlserver数据库’MyDatabase’填充了数据。 在这个数据库中,我有两个模式,’dbo’和’Master’。 dbo是默认架构并包含表: 所有者 地点 主模式包含表: 银行 区 表OWNER,LOCATION,BANK和ZONE包含多个属性。 我初始化了一个RoR服务器,并validation了安装了适当的gem(activerecord,tiny_tds,activerecord-sqlserver-adapter),以及database.yml中提供的正确信息,以便建立连接。 我~~能够连接到数据库。 我能够添加和删除表。 对我来说不寻常的是,当我运行rake db:migrate ,只有来自dbo架构的属性会在我的RoR服务器的schema.rb文件中自动初始化: ActiveRecord::Schema.define(:version => 20131014210258) do create_table “BANK”, :id => false, :force => true do |t| end create_table “LOCATION”, :id => false, :force => true do |t| t.string “VarA”, :limit => 50 t.string “VarB”, :limit => 50 t.decimal “VarC”, :precision => 28, […]

Capistrano部署到同一个Cloud Service上的许多节点

我在Azure上有一个Cloud Service,包含许多实例,每个实例都具有相同的地址,例如。 mycloudservice.cloudapp.net但是在随机端口上公开ssh服务,以便可以从外部访问任何实例。 问题是Capistrano不喜欢这个命名,更清楚: 使用不同的名称一切正常 server ‘myservice0.cloudapp.net’, user: ‘azureuser’, roles: %w{web} server ‘myservice1.cloudapp.net’, user: ‘azureuser’, roles: %w{web} 但是当我使用不同端口的相同名称时,Capistrano认为我只是重新定义了以前的服务器,所以它最终仅使用最后一个服务器 server ‘myservice.cloudapp.net’, port: 53458, user: ‘azureuser’, roles: %w{web} server ‘myservice.cloudapp.net’, port: 62434, user: ‘azureuser’, roles: %w{web} 是否有任何工作来定义具有相同名称的多个服务器?