我一整天都在使用rails表格,我只是随机测试它并尝试了日期25/12/2009,它出现了一个巨大的错误.
就在这时我意识到导轨设置为美国日期模式(mm/dd/yyyy)而不是英国风格:dd/mm/yyyy.
如何设置rails以自动处理dd/mm/yyyy格式的所有日期?
也许一些红宝石专家可以在调用save()时了解activerecord如何知道插入或更新.它背后的逻辑是什么?它检查主键是否为空或其他什么,如果是,是否插入,如果不是更新?
我在之前的一次采访中得到了这个问题而无法做到,任何想法?
这是做什么的:
`$=`;$_=\%!;($_)=/(.)/;$==++$|;($.,$/,$,,$\,$",$;,$^,$#,$~,$*,$:,@%)=(
$!=~/(.)(.).(.)(.)(.)(.)..(.)(.)(.)..(.)......(.)/,$"),$=++;$.++;$.++;
$_++;$_++;($_,$\,$,)=($~.$"."$;$/$%[$?]$_$\$,$:$%[$?]",$"&$~,$#,);$,++
;$,++;$^|=$";`$_$\$,$/$:$;$~$*$%[$?]$.$~$*${#}$%[$?]$;$\$"$^$~$*.>&$=`
Run Code Online (Sandbox Code Playgroud)我有一个球队桌和一个球员桌,我想找到所有没有球员的球队.玩家表通过team_id列关联.我正在使用Ruby on Rails,所以我有一个Team和一个Player模型.
目前在我的应用程序中,我有项目和用户的概念.现在我想为这些实现一个帐户范围,以便项目和用户都属于一个帐户,而不是特别没有.通过这样做,我想像我这样的范围:
scope ":account_id" do
resources :projects
...
end
Run Code Online (Sandbox Code Playgroud)
但是,通过scope使用命名参数实现路由,这会更改路由助手的执行方式,以便project_path路由助手现在需要两个参数,一个用于account_id参数,另一个用于id参数,如下所示:
project_path(current_account, project)
Run Code Online (Sandbox Code Playgroud)
这个微小的 scope变化要求我在控制器和视图中对应用程序进行大量更改,以便我使用这些路径助手.
当然,当然,有一个干净的方法可以做到这一点,而无需更改应用程序中的每个路由助手?
我正在尝试为我的Spree 1.2商店添加一个额外的步骤,这将允许客户创建订阅.我已插入步骤,并呈现正确的视图,但当用户单击"保存并继续"时,将呈现下一步,但实际上并未保存任何内容.
我知道我需要添加一个state_callback,但我不知道如何做到这一点并且Spree文档非常缺乏(大概是因为它很新)
目前我的扩展中有以下内容:
车型/大礼包/ order_decorator.rb
Spree::Order.class_eval do
belongs_to :subscription
accepts_nested_attributes_for :subscription
# This doesn't appear to be called
Spree::Order.state_machine.after_transition :from => :subscription,
:do => :valid_subs?
checkout_flow do
go_to_state :address
go_to_state :subscription
go_to_state :payment, :if => lambda { |order| order.payment_required? }
go_to_state :confirm, :if => lambda { |order| order.confirmation_required? }
go_to_state :complete
remove_transition :from => :delivery, :to => :confirm
end
end
Run Code Online (Sandbox Code Playgroud)
不完全确定accepts_nested_attributes是必要的,但到目前为止我的开发方法一直是试验和错误,所以它最终停留在那里.
在models/subscription.rb中
class Subscription < ActiveRecord::Base
attr_accessible :start_date, :frequency
belongs_to :user
has_many :orders
has_many :products
validates :start_date, :frequency, :presence …Run Code Online (Sandbox Code Playgroud) http://api.rubyonrails.org/classes/Time.html#method-i-advance记录了advance()添加到当前时间的方法.'有go_back()方法吗?
我需要在我的rails程序中使用它,所以我可以获取图像内容然后base64它.我知道如何base64它但我只是不知道如何获得图像.谁知道怎么样?
我通过包含一个模块来扩展一个类(在插件中),这是在初始化器中完成的.
require 'qwerty/core/user'
User.send :include, Qwerty::Core::Extensions::User
Run Code Online (Sandbox Code Playgroud)
但是在开发之前,每个请求(以及在控制台中调用reload!之后)都会重新加载所有模型,但由于初始化程序不会再次运行,因此不包含该模块.留下"缺少部件"的模型.
因为模型是在插件中,所以直接在类中包含代码似乎是明智的,这是通常的方法.
现在我只是添加了一个before_filter,它包含了在开发环境中的模块.但我已经复制/粘贴并在初始化程序和应用程序控制器中有重复的代码.
# Class extensions in initalizers are over-writtern each request
def development_loading
if RAILS_ENV == 'development'
User.send :include, Qwerty::Core::Extensions::User
end
end
Run Code Online (Sandbox Code Playgroud)
有没有更好的办法?
作为旁注,插件是我的,所以我可以添加代码,但模块中保存的扩展可能并不总是存在...
假设我正在抽象代码,并且循环遍历对象x的列名,那么检测列是否为关联的最佳方法是什么?
我知道我可以做到这一点,但我想知道是否有更好的方法:
@user = User.first
@user.attributes.keys.each do |column|
if column[-3..-1] == "_id" && @user.respond_to?(column[0..-4].to_sym)
puts "#{column} is an association / relation."
else
puts "#{column} is not an assocation / relation."
end
end
end
Run Code Online (Sandbox Code Playgroud)
任何内置的Rails方法或助手来检测关联?上面的代码既不漂亮,也不是万无一失.谢谢!