[quote=ricardo.valeriano]Então @j0nny, precisaria ver melhor exatamente qual é o uso disso em sua aplicação. De qualquer forma vou contribuir com meus 2 cents aqui, aí você vê o que acha da abordagem, beleza?
Desde já, como o código é de improviso aqui e não foi testado, pode ser que tenha algum probleminha… o html também não será o mais caprichado XD
Imagine a seguinte lógica: um cliente só pode ver seus pedidos, caso eles tenham sido realizados dentro de um determinado período (que me parece ser algo próximo ao que você esta buscando).
#app/views/clientes/show.html.erb
Nome: <%= @cliente.nome %><br />
<%= pedidos_do @cliente %>
No modelo de clientes, eu faria a lógica de busca:
[code]#app/models/cliente.rb
class Cliente < ActiveRecord::Base
has_many :pedidos
def pedidos_feitos_no periodo
pedidos.where “data >= #{periodo.inicio} and data <= #{periodo.fim}” # um between também vai xD
end
end[/code]
Agora o helper não precisa ser muito inteligente sobre o que quer dizer um período, mas pode usar períodos, clientes, pedidos a vontade:
#app/helpers/clientes_helper.rb
module ClientesHelper
def pedidos_do cliente
pedidos_html = "Pedidos: <div id='pedidos'>"
periodo = Periodo.logica_marota_para_obter_periodo_dependendo_do_seu_dominio
pedidos = cliente.pedidos_feitos_no periodo
pedidos_html << render(pedidos)
raw(pedidos_html << "</div>")
end
end
E para isso funfar, precisa de um partialzinho para exibir os pedidos:
[code]#app/views/pedidos/_pedido.html.erb
R$ <%= pedido.preco %>
[/code]
Uma outra observação que eu gostaria de fazer com a informação que você me passou até aqui: está me parecendo que uma data estar dentro de um certo período é algo crítico para a sua lógica/modelo. Se for o caso, eu provavelmente levaria essa preocupação para lá:
#app/models/periodo.rb
class Periodo
def contem? data
# provavelmente sua lógica será mais complexa que isso...
(@dt_inicio..@dt_fim).cover? data
end
end
O que acha dessa abordagem?[/quote]
Certo, seria mais ou menos isso mesmo.
Na verdade queria usar na validação, mas me equivoquei, pq na verdade isso seria responsabilidade do JS, certo?
De qualquer forma, agradeço a paciência e os esclarecimentos