这可能很容易,但我很难搞清楚.
我有一个部分:
<% for room in @scrape %>
<tr id="page_<%= room.id %>">
<th scope="row" class="<%= cycle("spec", "specalt") -%>"><%=h room.name %></td>
<td class="<%=current_cycle%>"><%=h room.day1 %></td>
<td class="<%=current_cycle%>"><%=h room.day2 %></td>
<td class="<%=current_cycle%>"><%=h room.day3 %></td>
<td class="<%=current_cycle%>"><%=h room.day4 %></td>
<td class="<%=current_cycle%>"><%=h room.day5 %></td>
<td class="<%=current_cycle%>"><%=h room.day6 %></td>
<td class="<%=current_cycle%>"><%=h room.day7 %></td>
<td class="<%=current_cycle%>"><%= select_tag("room[#{room.id}]", options_for_select(0..room.spots,0)) %></td>
</tr>
<% end %>
Run Code Online (Sandbox Code Playgroud)
从find_by_sql结果如下:
ID Room Day1 Day2 Day3 Day4 Day5 Day6 Day7
18298 Blue Room 13.23 13.23 13.23 13.23 13.23 13.23 13.23
Run Code Online (Sandbox Code Playgroud)
但我不知道会有多少天,我如何通过不同日期的列结果循环?
我不是Rails的新手,但到目前为止我还没有做过这么复杂的事情,所以我很好奇一个更有经验的rails开发者可能分享的内容:
我有一个SQL查询,它将4个左右的表连接到一个输出中:
SELECT places.id, places.name, places.email, places.website, places.blurb, external_ratings.rating, photos.data_file_name
FROM `scannables`
INNER JOIN places ON scannables.place_id = places.id
INNER JOIN locations ON places.location_id = locations.id
LEFT JOIN external_ratings ON scannables.place_id = external_ratings.place_id
LEFT JOIN photos ON scannables.place_id = photos.place_id
WHERE locations.id = 2474 AND scannables.bookdate BETWEEN '2009-08-29' and date_add('2009-08-29', INTERVAL 4 DAY)
GROUP BY scannables.place_id
HAVING SUM(scannables.available) >= 4
ORDER BY SUM(scannables.available) DESC, external_ratings.rating DESC
Run Code Online (Sandbox Code Playgroud)
我拥有在各种模型中定义的所有表关系,并且最初只使用这些定义的关系(使用活动记录)来提取各种数据,并且它工作正常,除了主要查询,最大的是非常慢,执行多个indv.查询.我的问题是,我应该在这种情况下转储Active Record并使用find_by_sql ......还是我错过了什么?
什么是Rails方式?
谢谢
我现在有一个对象:
class Items
attr_accessor :item_id, :name, :description, :rating
def initialize(options = {})
options.each {
|k,v|
self.send( "#{k.to_s}=".intern, v)
}
end
end
Run Code Online (Sandbox Code Playgroud)
我把它作为单个对象分配到一个数组中......
@result = []
some loop>>
@result << Items.new(options[:name] => 'name', options[:description] => 'blah')
end loop>>
Run Code Online (Sandbox Code Playgroud)
但不是将我的单个对象分配给数组......我怎样才能使对象本身成为一个集合?
基本上想要以这样的方式拥有对象,以便我可以定义诸如的方法
def self.names
@items.each do |item|
item.name
end
end
Run Code Online (Sandbox Code Playgroud)
我希望这是有道理的,可能我忽视了一些宏伟的计划,这将使我的生活在两行中变得无比轻松.
我有一个新表,我将添加到一堆其他汇总数据,基本上通过计算每周avgs来减少一些负载.
我的问题是我是否会因为一个模型而不是另一个模型而变得更好.一种模型,一周中的几天作为一列,另外一列价格或另一个模型作为DOW的一系列字段,每个都需要付出代价.
我想知道哪些可以节省我的速度和/或头痛?或者至少是权衡.
IE浏览器.
ID OBJECT_ID MON TUE WED THU FRI SAT SUN SOURCE
Run Code Online (Sandbox Code Playgroud)
要么
ID OBJECT_ID DAYOFWEEK PRICE SOURCE
Run Code Online (Sandbox Code Playgroud) 我发现了 Money gem 的这个附加组件,它从 ECB 欧洲中央银行更新(每 24 小时更新一次汇率),但我不确定应该如何在使用多种货币的 Rails 应用程序中进行缓存。
http://github.com/RubyMoney/eu_central_bank
eu_bank ||= EuCentralBank.new
eu_bank.update_rates
#Rails.cache.fetch('rates', :expires_in => 24.hours) { eu_bank.update_rates }
rate = eu_bank.exchange_with(Money.new(100, session[:currency]), "USD").to_f
Run Code Online (Sandbox Code Playgroud)
它有一个功能可以将费率写入某个文件......但我也不确定这就是我想要的。我还使用具有只读文件系统的heroku。
eu_bank.save_rates("/some/file/location/exchange_rates.xml")
Run Code Online (Sandbox Code Playgroud)
我也找不到任何方法来检查该物体的年龄。我只是想知道每 24 小时加载一次并持续用于我的整个 Rails 应用程序的最佳选择。有什么指点吗?
如何在数据中省略零?
例如使用MIN功能?我希望最小值除了0 ...
我怎样才能获得下一个最大的?
MIN(availables.price)
Run Code Online (Sandbox Code Playgroud)
如果我使用AVG功能,还有一种通常的方法可以以相同的方式跳过0吗?问题是我继承的表不使用NULL值,但对所有财务数据都有0.00.
谢谢,
我有一个Model属性,它有使用STI的子类,
我希望所有人都使用相同的控制器,只有不同的视图部分取决于子类.
Property
Restaurant < Property
Landmark < Property
Run Code Online (Sandbox Code Playgroud)
除了我不确定如何辨别控制器内的子类以呈现正确的视图之外,它还可以工作.IE浏览器./餐厅工作,并去物业控制器,但我不能告诉他们,他们想要餐厅的子类?
map.resources :restaurant, :controller => :properties
map.resources :properties
Run Code Online (Sandbox Code Playgroud) routing routes ruby-on-rails subclass single-table-inheritance
我一直在当前项目中使用位掩码来跟踪用户角色,但现在我需要能够为所有具有特定角色的用户执行查找.
我的角色设置如下:
ROLES = %w[admin editor moderator contributor]
def roles
ROLES.reject do |r|
((roles_mask || 0) & 2**ROLES.index(r)).zero?
end
end
def roles=(roles)
self.roles_mask = (roles & ROLES).map { |r| 2**ROLES.index(r) }.sum
end
def role_symbols
roles.map(&:to_sym)
end
Run Code Online (Sandbox Code Playgroud)
我可以找到具有完全相同位图的所有用户,但不知道如何提取一个特定角色,在这种情况下,所有用户都具有"编辑器"角色.
ruby ruby-on-rails bitmap declarative-authorization ruby-on-rails-3
我怎样才能非常简单地使用像"times"这样简单的东西在ruby中构造一个哈希
我有一个@date(即= Date.today)然后好几天...说5
5.times { |i| @date_range[:day] = (@date+i).strftime("%Y-%m-%d") }
Run Code Online (Sandbox Code Playgroud)
我知道必须有一些超级简单的东西.
谢谢...
这是相当微不足道的,但令我困扰的是,我还没有找到使用谷歌或这个论坛的答案.但是我怎么能把它变成一条线呢?无需在上面声明房间数组?
rooms = []
hwdata.availability.each {|room| rooms << room.name}
Run Code Online (Sandbox Code Playgroud) 我过去曾使用虚拟属性,但我似乎无法超越这个,而且我知道答案可能正在盯着我.
我有一个这样的模型:
class Confirmation < ActiveRecord::Base
#attr_accessible :confirmation, :confirmation_token
#attr_accessible :confirmation_token
def confirmation_token
confirmation.confirmation_token if confirmation
end
def confirmation_token=(token)
self.confirmation = Booking.find_by_confirmation_token(token)
end
end
Run Code Online (Sandbox Code Playgroud)
你的平均脚手架控制器
def new
@confirmation = Confirmation.new(:confirmation_token => params[:confirmation_token])
respond_to do |format|
format.html # new.html.erb
format.xml { render :xml => @confirmation }
end
end
Run Code Online (Sandbox Code Playgroud)
<h1>New confirmation</h1>
<% form_for(@confirmation) do |f| %>
<%= f.error_messages %>
<%= f.hidden_field :confirmation_token %>
...
Run Code Online (Sandbox Code Playgroud)
map.confirmation "confirmation/:confirmation_token", :controller => "confirmations", :action => "new"
map.resources :confirmations
Run Code Online (Sandbox Code Playgroud)
未定义的方法`confirm ='for# …
我最近在表单中收到了很多名字条目.虽然也许我应该有2个单独的名字和姓氏字段,但这在我看来总是有点多.但我想尝试获得一个全名,基本上只能通过至少有一个空格来确定.
我想出了这个,但我想知道是否有人有更好的,可能更简单的解决方案?
/([a-zA-Zàáâäãåèéêëìíîïòóôöõøùúûüÿýñç?šžÀÁÂÄÃÅÈÉÊËÌÍÎÏÒÓÔÖÕØÙÚÛÜŸÝÑßÇŒÆ?ŠŽ?ð,.'-]{2,}) ([a-zA-Zàáâäãåèéêëìíîïòóôöõøùúûüÿýñç?šžÀÁÂÄÃÅÈÉÊËÌÍÎÏÒÓÔÖÕØÙÚÛÜŸÝÑßÇŒÆ?ŠŽ?ð,.'-]{2,})/
Run Code Online (Sandbox Code Playgroud)
这基本上是这个/([a-zA-Z,.'-]) ([a-zA-Z,.'-])/加上unicode的支持.
ruby-on-rails ×11
ruby ×8
sql ×4
arrays ×3
activerecord ×1
aggregate ×1
attributes ×1
average ×1
bitmap ×1
caching ×1
class ×1
currency ×1
hash ×1
loops ×1
memcached ×1
methods ×1
mysql ×1
partial ×1
postgresql ×1
regex ×1
routes ×1
routing ×1
subclass ×1
validation ×1
virtual ×1