我试图每四个字符拆分一个相当大的字符串.这就是我试图这样做的方式:
big_string.split(/..../)
Run Code Online (Sandbox Code Playgroud)
这产生了一个零数组.据我所知,这应该是有效的.当我将其插入在线ruby正则表达式测试时,它甚至会这样做.
我有一个Rails应用程序,其中少量操作需要大量的计算时间.我没有考虑将这些操作作为后台任务进行管理的复杂性,而是发现我可以将处理拆分为多个线程,并且通过将JRuby与多核服务器一起使用,我可以确保所有线程在合理的时间内完成.(客户已表示非常有兴趣在后台保持此方法与运行任务.)
问题是写入Rails记录器在这些线程中不起作用.日志文件中没有显示任何内容.我找到了一些对这个问题的引用但没有解决方案.我不介意在我的代码中插入puts以帮助调试,但是stdout似乎被glassfish gem app服务器吃掉了.
有没有人成功完成Rails ruby线程内的日志记录,而不是每次都创建一个新日志?
我有一个看起来像这样的数组.
[{"EntryId"=>"2", "Field1"=>"National Life Group","DateCreated"=>"2010-07-30 11:00:14", "CreatedBy"=>"tristanoneil"},
{"EntryId"=>"3", "Field1"=>"Barton Golf Club", "DateCreated"=>"2010-07-30 11:11:20", "CreatedBy"=>"public"},
{"EntryId"=>"4", "Field1"=>"PP&D Brochure Distribution", "DateCreated"=>"2010-07-30 11:11:20", "CreatedBy"=>"public"},
{"EntryId"=>"5", "Field1"=>"Prime Renovation Group, DreamMaker Bath & Kitchen", "DateCreated"=>"2010-07-30 11:11:21", "CreatedBy"=>"public"}
]
Run Code Online (Sandbox Code Playgroud)
我将如何迭代遍历此数组,以便我可以指定要打印的字段并获取值,因此我可以执行类似的操作.
puts EntryId.value
Run Code Online (Sandbox Code Playgroud) 假设如下:
def create_new_salt
self.salt = self.object_id.to_s + rand.to_s
end
Run Code Online (Sandbox Code Playgroud)
为什么使用"自我"会更好.而不是实例变量'@salt'?
我有一个与组有HABTM关系的用户模型.我不希望用户能够在5个以上的组中,所以想要验证HABTM关系的长度.
在编辑用户页面上,我有一个复选框列表,用户可以在其中选择他们想要的组(我正在使用formtastic作为表单).
在我的用户控制器中我打电话:
@user.update_attributes(params[:user])
Run Code Online (Sandbox Code Playgroud)
这导致rails自动更新关联.
在我的用户模型中,我有以下内容:
def validate
if self.groups.length > 5
self.errors.add(:groups, "cannot have more than 5 groups")
end
end
Run Code Online (Sandbox Code Playgroud)
这导致表单验证失败,但update_attributes调用已更新数据库以反映对关联组的更改.这样,每次用户单击"保存"按钮时,即使记录无效,也会保存其组关联.
解决这个问题的最佳方法是什么?
我想也许验证需要在组模型而不是用户模型上,这会起作用吗?理想情况下,我想更新关联的组而不保存记录,进行验证,然后保存记录.
validation activerecord ruby-on-rails has-and-belongs-to-many
我正在使用Rails 2.3.5.
这是一个标准案例.表是:用户,评论,user_comments.我需要找到状态为"有效"且已发布至少一条评论的所有用户.
我知道评论表可以有外键,但这是一个人为的例子.表中有两个用户.有两条评论.这两条评论都是由第一个用户发布的.
named_scope :with_atleast_one_comment, lambda { {
:joins => 'inner join user_comments on users.id = user_comments.user_id ' } }
named_scope :with_active_status, {:conditions => {:status => 'active'} }
Run Code Online (Sandbox Code Playgroud)
当我执行
User.with_atleast_one_comment.with_active_status
Run Code Online (Sandbox Code Playgroud)
我得到两条记录.由于两个评论都是由一个用户发布的,我只想要一个用户.
有什么问题?
我尝试以下列方式定义default_scope:
default_scope :joins => :product, :select => "catalog_products.*, products.*"
Run Code Online (Sandbox Code Playgroud)
我从Rails得到的是这样的:
SELECT catalog_products.* FROM `catalog_products` INNER JOIN `products` ON `products`.id = `catalog_products`.product_id
Run Code Online (Sandbox Code Playgroud)
当我将它定义为named_scope时,一切都很好:
named_scope :extended, :joins => :product, :select => "catalog_products.*, products.*"
SELECT catalog_products.*, products.* FROM `catalog_products` INNER JOIN `products` ON `products`.id = `catalog_products`.product_id
Run Code Online (Sandbox Code Playgroud)
这应该是一个错误还是一个正确的行为?
我正在使用Rails 2.3.4.
谢谢!
我很快就会开始一项新的工作,其中大量使用Scheme.我目前不知道Scheme,但我的雇主向我保证这不是问题.
无论我想在开始日期之前开始运作并掌握该语言的工作知识.所以我正在寻找可以从中学习Scheme的好资源.
我对函数式语言的接触很少.真的只是Haskell的一小部分课程.但我在程序,面向对象和程序语言方面有很强的背景.
在评论者提出要求之前,我能胜任以下语言:C,C++,C#,Java,Perl,Python和Ruby.
假设我有一个带有选择菜单的form_for,用于在belongs_to关联上分配用户:
...
form.select :user_id, @users, :prompt => "Select a User"
...
Run Code Online (Sandbox Code Playgroud)
目前我在控制器中有@users如下:
@users = User.all.map { |u| [u.full_name, u.id] }
Run Code Online (Sandbox Code Playgroud)
我觉得这个逻辑可能会转移到帮助者甚至模型中.但我很困惑在哪里处理这个以及如何处理.
可以说我有一个消息资源.在html的某处我有:
<%= link_to("Delete", message, :title => 'Delete', :confirm => 'Are you sure?',
:method => :delete )%>
Run Code Online (Sandbox Code Playgroud)
在我删除它之后,它会将我重定向到列出所有消息的页面.有没有办法重定向到删除后指定的页面?
我正在一个网站上工作,我想在用户在页面上时循环图像,类似于幻灯片.我四处搜寻,但未能找到领先优势.
有没有人用Rails和它支持的Javascript框架做到这一点?
我很难解决以RESTful方式完成任务的问题.我有一个"任务"控制器,还有一个"complete_tasks"控制器.
我在complete_tasks_controller创建操作中有这个:
def create
@task = Task.find(params[:id])
@task.completed_at = Time.now
@task.save
end
Run Code Online (Sandbox Code Playgroud)
我试着这样说:
<%=link_to "Complete task", new_task_complete_task_path(@task), :method => :post %>
Run Code Online (Sandbox Code Playgroud)
..但是我在提到"只允许获取,放置和删除请求"时遇到错误.
你知道我做错了什么吗?
ruby ×4
activerecord ×3
rest ×2
ajax ×1
ipc ×1
javascript ×1
jruby ×1
jrubyonrails ×1
named-scope ×1
regex ×1
resources ×1
routes ×1
scheme ×1
validation ×1