小编Jak*_*mer的帖子

Capistrano 3拉命令行参数

我正在从Capistrano 2升级到Capistrano 3.在Cap 2中我使用以下命令行参数作为分支名称(否则默认为master)

set :branch, fetch(:branch, "master")
Run Code Online (Sandbox Code Playgroud)

如果我打电话cap deploy,它将部署主分支.但它也让我这样做:

cap deploy -S branch=foo
Run Code Online (Sandbox Code Playgroud)

哪个部署foo分支.

现在,在Capistrano 3中,如果我尝试运行上面的操作,我会收到一个错误:invalid option: -S.

现在通过命令行传递参数的正确方法是什么?

git rake capistrano ruby-on-rails

14
推荐指数
2
解决办法
8537
查看次数

深嵌套导轨4表格

我有3个模型Item接受嵌套的问题和问题属性接受嵌套的答案属性.我正在尝试以相同的形式创建一个有问题和答案的项目.

item.rb的

class Item < ActiveRecord::Base
  has_many :questions, dependent: :destroy
  accepts_nested_attributes_for :questions
end
Run Code Online (Sandbox Code Playgroud)

question.rb

class Question < ActiveRecord::Base
  belongs_to :item

  has_many :answers, dependent: :destroy
  accepts_nested_attributes_for :answers
end
Run Code Online (Sandbox Code Playgroud)

answer.rb

class Answer < ActiveRecord::Base
  belongs_to :question
end
Run Code Online (Sandbox Code Playgroud)

item_controller.rb

class ItemsController < ApplicationController
    def new
      @item = @repository.items.new
      questions = @item.questions.build
      answers = questions.answers.build
    end

    def create
      @item = Item.new(item_params)
      if @item.save
          redirect_to @item, notice: '...'
      else
          render action: 'new'
      end
    end

  private
  def item_params
      params.require(:item).permit(:id, :content, :kind, :questions_attributes => [:content, :helper_text, :kind], …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails simple-form strong-parameters ruby-on-rails-4

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

如何在activeyord中为ruby设置一个非空约束?

我的迁移看起来像这样:

class CreatePosts < ActiveRecord::Migration
  def change
     create_table :posts do |t|
      t.string  :title 
      t.string  :content
      t.string  :author
      t.timestamps
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

如何将标题设置为NOT NULL?如果是SQL查询,我会这样做:

CREATE TABLE "posts" 
    ("id" serial primary key, 
     "title" character varying(255) NOT NULL, 
     "content" character varying(255), 
     "author" character varying(255), 
     "created_at" timestamp NOT NULL, 
     "updated_at" timestamp NOT NULL) 
Run Code Online (Sandbox Code Playgroud)

那么如何将该查询转换为ActiveRecord?

activerecord ruby-on-rails

7
推荐指数
2
解决办法
4092
查看次数

适用于Rails的mobile_fu 4

我正在尝试将我的应用程序从Rails 3.2.13切换到Rails 4.这样做,我遇到了一个主要障碍 - 我使用gem mobile_fu来确定用户是否来自移动设备.那个宝石需要3.2.13的栏杆,但轨道4.0.2和轨道4.0.2的sass-rails都要求栏杆> = 4.0.

什么是解决这个问题的好方法?我很乐意深入研究mobile_fu代码,因为它似乎并不特别棘手,但我在处理铁路以及对铁路的依赖性方面的经验很少.

谢谢!

ruby-on-rails bundler ruby-on-rails-3 railtie

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

未定义的方法`更新?' for HasOneAssociation,用于Rails 4中的嵌套属性

所以我的问题是:

https://gist.github.com/panSarin/4a221a0923927115584a

当我保存这个表格时,我得到像标题中的错误

NoMethodError (undefined method `updated?' for 
#ActiveRecord::Associations::HasOneAssociation:0x00000008fcacf8>):
Run Code Online (Sandbox Code Playgroud)

我检查没有多态关联 - 它是相同的.

当父模型(在那种情况下是BusinessClient)有belongs_to它然后它工作正常.但我无法相信我不能拥有孩子们所拥有的建筑parent_id.知道我应该改变什么使其有效?

ruby-on-rails has-one nested-attributes

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

如何从电子邮件服务器上获取有关rails app的电子邮件回复

我需要实现消息传递功能.当我从rails应用程序向任何用户发送消息时,它也会转到用户的电子邮件.但是,如果收到电子邮件的用户从gmail,yahoo..etc做出回复,我需要实现的,那么回复也应该进入rails应用程序.任何人都可以指导我..所以我可以在谷歌搜索它.

例如:

如果我通过此电子邮件"mc-6bckm434ls@reply.xyz.com"向用户发送电子邮件,并且用户在gspq5diedss@reply.xyz.com上回复了我Reply-To在标题中设置的内容.然后我需要用户在rails应用程序中的回复,以便我可以将此用户的回复添加到我的消息传递线程中.通过我想要实现的这个功能用户不需要在我的应用程序中登录做消息,用户也可以通过电子邮件回复在当前对话上做消息.

email ruby-on-rails sendgrid

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

如何检查一个数组的所有元素都大于并行数组中的对应元素(在Ruby中).

我试图比较两个数组,以确保一个的相应值总是大于另一个.

a = [2, 3, 4]
b = [1, 2, 3]

# a[0] > b[0] ... a[x] > b[x]
Run Code Online (Sandbox Code Playgroud)

此时我正在考虑使用inject索引并在比较失败时返回,如:

b.each_with_index.inject(true) do |cmp, (element,index)|
  if element > a[index] do
    cmp = false
    return
  end
end
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法呢?有点像Ruby或Rails的感觉可能已经有类似内置的东西,我错过了它.

ruby

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

如何在rails上的ruby中使用friendly_id从URL中删除模型名称

我有一个问题模型,允许用户添加问题.

我已经设置了Friendly_id,所以当用户添加问题时,网址是:

http://localhost:3000/questions/this-is-a-question
Run Code Online (Sandbox Code Playgroud)

但是,我希望网址看起来像这样

http://localhost:3000/this-is-a-question
Run Code Online (Sandbox Code Playgroud)

你对于我如何用friendly_id做到这一点有什么想法吗?

谢谢

更新:

这是我的friendly_id有问题.rb

extend FriendlyId
friendly_id :title, use: [:slugged, :finders]

def slug_candidates
[
  :title,
  [:title, :id]
]
end

def should_generate_new_friendly_id?
    new_record?
end 
Run Code Online (Sandbox Code Playgroud)

结束

ruby-on-rails url-routing rails-routing friendly-id ruby-on-rails-4

3
推荐指数
1
解决办法
1626
查看次数

在Heroku语言环境弃用警告上部署Rails 4.0.2

我已经更新到Rails 4.0.2并得到了弃用警告:

[已弃用] I18n.enforce_available_locales将来默认为true.如果您确实想跳过语言环境的验证,可以设置I18n.enforce_available_locales = false以避免此消息.

为了摆脱警告,我决定设置:

I18n.config.enforce_available_locales = true
config.i18n.default_locale = :es
Run Code Online (Sandbox Code Playgroud)

在我的config/application.rb文件中.

它适用于开发,但当我将我的工作部署到Heroku时,我得到以下错误:

-----> Writing config/database.yml to read from DATABASE_URL
-----> Preparing app for Rails asset pipeline
       Running: rake assets:precompile
       rake aborted!
       :es is not a valid locale
       /tmp/build_e6bd0f83-f9f7-45ad-9d98-13384d9403dc/vendor/bundle/ruby/2.1.0/gems/i18n-0.6.9/lib/i18n.rb:288:in `enforce_available_locales!'
       /tmp/build_e6bd0f83-f9f7-45ad-9d98-13384d9403dc/vendor/bundle/ruby/2.1.0/gems/i18n-0.6.9/lib/i18n/config.rb:32:in `default_locale='
       /tmp/build_e6bd0f83-f9f7-45ad-9d98-13384d9403dc/vendor/bundle/ruby/2.1.0/gems/i18n-0.6.9/lib/i18n.rb:35:in `default_locale='
       /tmp/build_e6bd0f83-f9f7-45ad-9d98-13384d9403dc/vendor/bundle/ruby/2.1.0/gems/activesupport-4.0.2/lib/active_support/i18n_railtie.rb:41:in `block in initialize_i18n'
       /tmp/build_e6bd0f83-f9f7-45ad-9d98-13384d9403dc/vendor/bundle/ruby/2.1.0/gems/activesupport-4.0.2/lib/active_support/i18n_railtie.rb:34:in `each'
       /tmp/build_e6bd0f83-f9f7-45ad-9d98-13384d9403dc/vendor/bundle/ruby/2.1.0/gems/activesupport-4.0.2/lib/active_support/i18n_railtie.rb:34:in `initialize_i18n'
       /tmp/build_e6bd0f83-f9f7-45ad-9d98-13384d9403dc/vendor/bundle/ruby/2.1.0/gems/activesupport-4.0.2/lib/active_support/i18n_railtie.rb:15:in `block in <class:Railtie>'
       /tmp/build_e6bd0f83-f9f7-45ad-9d98-13384d9403dc/vendor/bundle/ruby/2.1.0/gems/activesupport-4.0.2/lib/active_support/lazy_load_hooks.rb:36:in `call'
       /tmp/build_e6bd0f83-f9f7-45ad-9d98-13384d9403dc/vendor/bundle/ruby/2.1.0/gems/activesupport-4.0.2/lib/active_support/lazy_load_hooks.rb:36:in `execute_hook'
       /tmp/build_e6bd0f83-f9f7-45ad-9d98-13384d9403dc/vendor/bundle/ruby/2.1.0/gems/activesupport-4.0.2/lib/active_support/lazy_load_hooks.rb:45:in `block in run_load_hooks'
       /tmp/build_e6bd0f83-f9f7-45ad-9d98-13384d9403dc/vendor/bundle/ruby/2.1.0/gems/activesupport-4.0.2/lib/active_support/lazy_load_hooks.rb:44:in `each'
       /tmp/build_e6bd0f83-f9f7-45ad-9d98-13384d9403dc/vendor/bundle/ruby/2.1.0/gems/activesupport-4.0.2/lib/active_support/lazy_load_hooks.rb:44:in `run_load_hooks'
       /tmp/build_e6bd0f83-f9f7-45ad-9d98-13384d9403dc/vendor/bundle/ruby/2.1.0/gems/railties-4.0.2/lib/rails/application/finisher.rb:62:in `block in <module:Finisher>'
       /tmp/build_e6bd0f83-f9f7-45ad-9d98-13384d9403dc/vendor/bundle/ruby/2.1.0/gems/railties-4.0.2/lib/rails/initializable.rb:30:in `instance_exec'
       /tmp/build_e6bd0f83-f9f7-45ad-9d98-13384d9403dc/vendor/bundle/ruby/2.1.0/gems/railties-4.0.2/lib/rails/initializable.rb:30:in `run'
       /tmp/build_e6bd0f83-f9f7-45ad-9d98-13384d9403dc/vendor/bundle/ruby/2.1.0/gems/railties-4.0.2/lib/rails/initializable.rb:55:in `block …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails heroku

2
推荐指数
1
解决办法
1263
查看次数

RailsAdmin:#RailsAdmin :: Config :: Fields :: Types :: String>的未定义方法`link_to'

我正在使用RailsAdmin,我正在尝试在管理面板中添加指向存储在AWS上的视频的链接.

field :license do
    formatted_value do
      link_to 'license', value
    end
  end
  field :insurance do
    formatted_value do
      link_to 'insurance', value
    end
  end
  field :registration do
    formatted_value do
      link_to 'registration', value
    end
  end
  field :interview do
    pretty_value do
      link_to 'Download video', value.url
    end
  end
Run Code Online (Sandbox Code Playgroud)

这是我正在尝试配置的部分的rails_admin.rb(配置文件).前3个字段有效,但在INTERVIEW字段中我得到了

undefined method `link_to' for #<RailsAdmin::Config::Fields::Types::String:0xc83a7f0>
Run Code Online (Sandbox Code Playgroud)

您有什么建议可以在该领域获得链接吗?

谢谢!

ruby-on-rails rails-admin

2
推荐指数
1
解决办法
664
查看次数

检查关联是否存在

我有一个像这样的用户模型:

has_one :car
Run Code Online (Sandbox Code Playgroud)

和汽车型号:

belongs_to :user
Run Code Online (Sandbox Code Playgroud)

如何查看哪些用户没有汽车?

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

2
推荐指数
1
解决办法
3027
查看次数

如何在 Rails 4 中创建多个路由文件?

Rails 4 中定义来自多个文件的路由的最佳方法是什么?我应该创建它们并使用来自 的某种包含机制routes.rb,还是我应该做其他事情?

我知道 Rails 4 中有一个名为 的新功能concerns,尽管它们似乎与我想要做的事情无关。我不想修改现有的路由,我只想将我的定义分成多个文件以防止routes.rb变得太大。

routes ruby-on-rails ruby-on-rails-4

2
推荐指数
1
解决办法
946
查看次数

验证两个表的唯一性

我有一个CompanyArchive具有相同的表结构模型.两种型号都有validates :name, :uniqueness => true验证.

在company.rb文件中,我在设置自定义验证时遇到问题,当我向Company数据库添加记录时,它还会检查Archive模型(这样,如果存档模型中具有该名称的记录已存在,那么它将不会被添加到Company表中).

我假设这是可能的,但是我在实施方面遇到了麻烦,有人可以帮忙吗?

validation model ruby-on-rails ruby-on-rails-4

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