我已经搜索了,看起来这应该很简单,但我无法让它工作.我想在保存电话号码之前删除所有非数字字符.这就是我目前所拥有的:
before_save { |workorder| workorder.phonenumber =
phonenumber.to_s.gsub(/\D/, '').to_i }
Run Code Online (Sandbox Code Playgroud)
因此,如果用户输入
925-555-5555
Run Code Online (Sandbox Code Playgroud)
它应该保存9255555555,但它实际上只保存了925并且忽略了之后的所有内容
我也尝试过:
before_save { |workorder| workorder.phonenumber =
phonenumber.to_s.gsub(/[^0-9]/, "").to_i }
Run Code Online (Sandbox Code Playgroud)
结果相同.
解决了:
def raw_phonenumber
self.phonenumber
end
def raw_phonenumber=(s)
self.phonenumber=s.gsub(/\D/, '')
end
Run Code Online (Sandbox Code Playgroud) 我想做一个查询,只返回没有序列号的资产,其中workorder分支等于一个数字.
class Workorder < ActiveRecord::Base
belongs_to :user
has_many :assets
scope :current_branch, where("branch=350").order("wo_date ASC")
end
class Asset < ActiveRecord::Base
belongs_to :workorder
scope :needs_serial, :conditions => {:serial => ""}
end
class AssetsController < ApplicationController
def index
@assets_needing_serial=???
end
end
Run Code Online (Sandbox Code Playgroud)
所以我想要一个哈希:资产,其中assets.workorder.branch ="350".我想我可以做一个循环并以这种方式创建哈希,但我应该能够在查询中执行此操作吗?我应该尝试使用范围吗?
**更新
这就是我最终使用的.工作得很好.
@assets = Asset.joins(:workorder).where('workorders.branch=350').order('workorders.wo_date ASC')
Run Code Online (Sandbox Code Playgroud) 我似乎用以下模式编写了很多方法,似乎应该有更好的方法.这个或更好的做法是否有单线程?
def combine_roster(roster)
rstr = []
roster.each do |r|
rstr << r.user
end
rstr
end
Run Code Online (Sandbox Code Playgroud)