我正在从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.
现在通过命令行传递参数的正确方法是什么?
我有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) 我的迁移看起来像这样:
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?
我正在尝试将我的应用程序从Rails 3.2.13切换到Rails 4.这样做,我遇到了一个主要障碍 - 我使用gem mobile_fu来确定用户是否来自移动设备.那个宝石需要3.2.13的栏杆,但轨道4.0.2和轨道4.0.2的sass-rails都要求栏杆> = 4.0.
什么是解决这个问题的好方法?我很乐意深入研究mobile_fu代码,因为它似乎并不特别棘手,但我在处理铁路以及对铁路的依赖性方面的经验很少.
谢谢!
所以我的问题是:
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.知道我应该改变什么使其有效?
我需要实现消息传递功能.当我从rails应用程序向任何用户发送消息时,它也会转到用户的电子邮件.但是,如果收到电子邮件的用户从gmail,yahoo..etc做出回复,我需要实现的,那么回复也应该进入rails应用程序.任何人都可以指导我..所以我可以在谷歌搜索它.
例如:
如果我通过此电子邮件"mc-6bckm434ls@reply.xyz.com"向用户发送电子邮件,并且用户在gspq5diedss@reply.xyz.com上回复了我Reply-To在标题中设置的内容.然后我需要用户在rails应用程序中的回复,以便我可以将此用户的回复添加到我的消息传递线程中.通过我想要实现的这个功能用户不需要在我的应用程序中登录做消息,用户也可以通过电子邮件回复在当前对话上做消息.
我试图比较两个数组,以确保一个的相应值总是大于另一个.
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的感觉可能已经有类似内置的东西,我错过了它.
我有一个问题模型,允许用户添加问题.
我已经设置了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
我已经更新到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) 我正在使用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)
您有什么建议可以在该领域获得链接吗?
谢谢!
我有一个像这样的用户模型:
has_one :car
Run Code Online (Sandbox Code Playgroud)
和汽车型号:
belongs_to :user
Run Code Online (Sandbox Code Playgroud)
如何查看哪些用户没有汽车?
Rails 4 中定义来自多个文件的路由的最佳方法是什么?我应该创建它们并使用来自 的某种包含机制routes.rb,还是我应该做其他事情?
我知道 Rails 4 中有一个名为 的新功能concerns,尽管它们似乎与我想要做的事情无关。我不想修改现有的路由,我只想将我的定义分成多个文件以防止routes.rb变得太大。
我有一个Company和Archive具有相同的表结构模型.两种型号都有validates :name, :uniqueness => true验证.
在company.rb文件中,我在设置自定义验证时遇到问题,当我向Company数据库添加记录时,它还会检查Archive模型(这样,如果存档模型中具有该名称的记录已存在,那么它将不会被添加到Company表中).
我假设这是可能的,但是我在实施方面遇到了麻烦,有人可以帮忙吗?
ruby-on-rails ×12
activerecord ×1
bundler ×1
capistrano ×1
email ×1
friendly-id ×1
git ×1
has-one ×1
heroku ×1
model ×1
rails-admin ×1
railtie ×1
rake ×1
routes ×1
ruby ×1
sendgrid ×1
simple-form ×1
url-routing ×1
validation ×1