这是Bar#do_things:
class Bar
def do_things
Foo.some_method(x) do |x|
y = x.do_something
return y_is_bad if y.bad? # how do i tell it to stop and return do_things?
y.do_something_else
end
keep_doing_more_things
end
end
Run Code Online (Sandbox Code Playgroud)
这是Foo#some_method:
class Foo
def self.some_method(targets, &block)
targets.each do |target|
begin
r = yield(target)
rescue
failed << target
end
end
end
end
Run Code Online (Sandbox Code Playgroud)
我想过使用raise,但我试图让它变得通用,所以我不想把任何具体的东西放进去Foo.
我有一个功能正常的Rails 3应用程序使用has_many:通过关联,当我将其重新设置为Rails 4应用程序时,让我从Rails 4版本中的相关模型中保存ID.
这两个版本的三个相关模型是相同的.
Categorization.rb
class Categorization < ActiveRecord::Base
belongs_to :question
belongs_to :category
end
Run Code Online (Sandbox Code Playgroud)
Question.rb
has_many :categorizations
has_many :categories, through: :categorizations
Run Code Online (Sandbox Code Playgroud)
Category.rb
has_many :categorizations
has_many :questions, through: :categorizations
Run Code Online (Sandbox Code Playgroud)
在这两个应用程序中,类别ID都会像这样传递到create动作中
"question"=>{"question_content"=>"How do you spell car?", "question_details"=>"blah ", "category_ids"=>["", "2"],
Run Code Online (Sandbox Code Playgroud)
在Rails 3应用程序中,当我创建一个新问题时,它会插入问题表,然后插入到分类表中
SQL (82.1ms) INSERT INTO "questions" ("accepted_answer_id", "city", "created_at", "details", "province", "province_id", "question", "updated_at", "user_id") VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?) [["accepted_answer_id", nil], ["city", "dd"], ["created_at", Tue, 14 May 2013 17:10:25 UTC +00:00], ["details", "greyound?"], ["province", …Run Code Online (Sandbox Code Playgroud) 我有一张桌子Eg- tab.我要做的是复制一个自动增量列ID = 1的行,并将数据插入到同一个表中,行和列ID = 2.
使用MySql.如何在单个查询中执行此操作?请帮助
我有一个条件,我得到一个哈希
hash = {"_id"=>"4de7140772f8be03da000018", .....}
Run Code Online (Sandbox Code Playgroud)
我希望这个哈希为
hash = {"id"=>"4de7140772f8be03da000018", ......}
Run Code Online (Sandbox Code Playgroud)
PS:我不知道哈希中的键是什么,它们是随机的,每个键带有一个"_"前缀,我不想要下划线
我怎么能在这里做他们正在谈论的事情,但是在Ruby中呢?
你会如何对对象执行此功能?你将如何做一个全局函数(参见jetxee 在上述帖子中的回答)?
示例代码:
event_name = "load"
def load()
puts "load() function was executed."
end
def row_changed()
puts "row_changed() function was executed."
end
#something here to see that event_name = "load" and run load()
Run Code Online (Sandbox Code Playgroud)
更新: 你如何得到全球方法?还是我的全球职能?
我试过这个额外的一行
puts methods
Run Code Online (Sandbox Code Playgroud)
和load和row_change未列出的地方.
我有一个简单的~25个单词列表.我在PostgreSQL中有一个varchar字段,让我们说列表是['foo', 'bar', 'baz'].我想在我的表中找到任何包含这些单词的行.这会有效,但我想要更优雅的东西.
select *
from table
where (lower(value) like '%foo%' or lower(value) like '%bar%' or lower(value) like '%baz%')
Run Code Online (Sandbox Code Playgroud) 新的红宝石,穿上你的新手套.
以下两个片段之间是否有任何区别(模糊或实用)?
my_array = [:uno, :dos, :tres]
my_array.each { |item|
puts item
}
my_array = [:uno, :dos, :tres]
my_array.each do |item|
puts item
end
Run Code Online (Sandbox Code Playgroud)
我意识到括号语法允许你将块放在一行上
my_array.each { |item| puts item }
Run Code Online (Sandbox Code Playgroud)
但除此之外是否有任何令人信服的理由使用一种语法而不是另一种语法?
是否可以SQL在SQLite表中使用来替换字符串的一部分?
例如,我有一个表,其中一个字段保存文件的路径.是否可以替换部分字符串,例如
c:\afolder\afilename.bmp
Run Code Online (Sandbox Code Playgroud)
变
c:\anewfolder\afilename.bmp
Run Code Online (Sandbox Code Playgroud)
?
ruby ×5
sql ×3
arrays ×1
coding-style ×1
copy ×1
date ×1
division ×1
hash ×1
insert ×1
javascript ×1
jquery ×1
math ×1
mysql ×1
postgresql ×1
sqlite ×1