我需要在Ruby中计算从今天起1个月的日期并将其转换为String以下格式:
yyyy-dd-mmThh:MM:ss(例如2014-08-26T00:00:00)
我试过了:(DateTime.now - Date.today.prev_month).to_datetime.strftime("%FT%T")但是我得到的方法不存在异常.
我和Range一起玩Elixir.
它工作正常:
>1..10 |> Enum.map fn(x) -> x |> IO.puts end
>1
>..
>10
>[:ok, :ok, :ok, :ok, :ok, :ok, :ok, :ok, :ok, :ok]
Run Code Online (Sandbox Code Playgroud)
但这里有错误:
>'a'..'z' |> Enum.map fn(x) -> x |> IO.puts end
** (Protocol.UndefinedError) protocol Range.Iterator not implemented for 'a'
/Users/elix_lang/lib/elixir/lib/range.ex:7: Range.Iterator.impl_for!/1
Run Code Online (Sandbox Code Playgroud)
我来自Ruby熟悉,Erlang
我想了解问题是什么?
谢谢!!!
我完全按照http://sourcey.com/rails-4-omniauth-using-devise-with-twitter-facebook-and-linkedin/#changes中的说明进行操作
要在我的应用程序中实现Devise Omniauth Linkedin,我做了以下工作,
在devise.rb中
config.omniauth :linked_in, "*******", "**********"
Run Code Online (Sandbox Code Playgroud)
在我的用户模型user.rb中,我有这个
class User < ActiveRecord::Base
# Include default devise modules. Others available are:
# :lockable, :confirmable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable, :confirmable, :omniauthable
TEMP_EMAIL_PREFIX = 'change@me'
TEMP_EMAIL_REGEX = /\Achange@me/
validates_format_of :email, :without => TEMP_EMAIL_REGEX, on: :update
def self.find_for_oauth(auth, signed_in_resource = nil)
# Get the identity and user if they exist
identity = Identity.find_for_oauth(auth)
# If a signed_in_resource is provided it always overrides …Run Code Online (Sandbox Code Playgroud) 是否有相当于assign_attributes不覆盖属性的方法?
让我用一个简单的例子来解释一下:
my_model = MyModel.new(first_name: 'Romain', age: nil)
new_attributes = {first_name: 'Pierre', last_name: 'Roger', age: 27}
my_model.assign_attributes(new_attributes)
# What I get : <first_name='Pierre', last_name='Roger', age=27>
# * Romain is overwritten by Pierre
# * nil is overwritten by 27
# What I would like : <first_name='Romain', last_name='Roger', age=27>
# * Romain isn't overwritten by Pierre
# * nil is overwritten by 27
Run Code Online (Sandbox Code Playgroud)
我知道我可以做这样的事情,但这似乎不对:
new_attributes.merge(
my_model.slice(:first_name, :last_name, :age)
.select { |_, val| !val.nil? }
)
my_model.assign_attributes(new_attributes)
Run Code Online (Sandbox Code Playgroud)
任何想法?
我需要为关联模型编写测试。
规范/工厂/用户.rb:
FactoryGirl.define do
factory :user do
sequence(:name){ |i| "us#{i}" }
sequence(:email){ |i| "us#{i}@ad.ad" }
password 'qwerty'
password_confirmation{ |u| u.password }
info Faker::Lorem.paragraph(7)
trait :user_status do
status_id 0
end
trait :manager_status do
status_id 1
end
trait :admin_status do
status_id 2
end
end
end
Run Code Online (Sandbox Code Playgroud)
但文件spec/factories/users.rb 是空的。
架构:
create_table "statuses", force: :cascade do |t|
t.string "title"
end
create_table "users", force: :cascade do |t|
t.string "email", default: "", null: false
t.string "encrypted_password", default: "", null: false
t.integer "status_id", default: 0
t.string "name"
end …Run Code Online (Sandbox Code Playgroud) 我用过rails-admin.我在navbar-header栏中输入名称"myappname admin".我想用"myapp"名称更改它.我试图用自定义视图文件更改它
navigation.html.haml
.container-fluid
.navbar-header
%button.navbar-toggle.collapsed{ type: 'button', data: { toggle: 'collapse', target: '#secondary-navigation' } }
%span.sr-only= t('admin.toggle_navigation')
%span.icon-bar
%span.icon-bar
%span.icon-bar
%a.navbar-brand.pjax{href: dashboard_path}
/ = _get_plugin_name[0] || 'Rails'
= "myapp"
/ %small= _get_plugin_name[1] || 'Admin'
.collapse.navbar-collapse#secondary-navigation
= render partial: 'layouts/rails_admin/secondary_navigation'
Run Code Online (Sandbox Code Playgroud)
但它没有改变我的应用名称.
我使用这样的 minitest 实现集成测试
test "should get index" do
get admin_product_url, params: {}, session: { user_id: @admin_user.id }
assert_response :success
end
Run Code Online (Sandbox Code Playgroud)
但我收到此错误消息
ArgumentError: unknown keyword: session
Run Code Online (Sandbox Code Playgroud)
我还能如何设置会话信息?
我正在使用 ruby 2.4 和 Rails 5.0.2
我正在尝试使用Postman chrome扩展程序向我的Ruby on Rails应用程序发送帖子请求,但我一直收到错误
Run Code Online (Sandbox Code Playgroud)ActionController::ParameterMissing (param not found: order): app/controllers/orders_controller.rb:27:in order_params' app/controllers/orders_controller.rb:20:in create
我的orders_controller中的代码是
class OrdersController < ApplicationController
protect_from_forgery :except => :create
def new
@order = Order.new
end
def index
@orders = Order.all
end
def show
@order = Order.find(params[:id])
end
def create
@order = Order.new(order_params)
render text: params[:product]
end
private
def order_params
params.require(:order).permit(:product)
end
end
Run Code Online (Sandbox Code Playgroud)
我对Postman扩展的关键值对是 product[product_name] Samsung
我正在使用Capistrano 3,我想创建自己的任务.所以我在lib/capistrano/tasks中创建了一个文件my_new_thing.rake,当我运行cap -T时我可以看到任务.但是......有些方法不可用.当我尝试使用上传!我明白了
cap aborted!
NoMethodError: undefined method `upload!' for main:Object
Run Code Online (Sandbox Code Playgroud)
但是,如果我将相同的任务移动到config/deploy.rb然后上传!方法可用.
发生什么了?如何创建新的Capistrano任务将它们放在单独的文件中并让它们工作?
我正在Rails 4中构建API。在调用操作之前,我首先尝试检查http标头中是否存在属性。有没有办法检查控制器的所有动作中的每个动作。Rails文档中提到了类似
constraints(lambda { |req| req.env["HTTP_CUSTOM_HEADER"] =~ /value/ }) do
#controller, action mapping
end
Run Code Online (Sandbox Code Playgroud)
但我仍想向使用我的API的用户提供反馈。类似于发送带有消息说明的json:missing the custom attribute in the header
ruby ×5
capistrano3 ×1
date ×1
devise ×1
elixir ×1
factory-bot ×1
linkedin ×1
minitest ×1
omniauth ×1
params ×1
rails-admin ×1
range ×1
rspec ×1