Skip to content

Instantly share code, notes, and snippets.

View fdutey's full-sized avatar

Florian Dutey fdutey

  • Simfinity
  • Zhuhai
View GitHub Profile
class Post < ActiveRecord::Base
#...
validates_unchanged_value :title, :if => published?,
:message => :frozen_attribute_when_published
end
#lib/active_record/custom_validations.rb
module ActiveRecord
module CustomValidations
def validates_unchanged_value(*attr_names)
configuration = { :message => :frozen_attribute }
configuration.update(attr_names.extract_options!)
configuration[:on] = :update
validates_each(attr_names, configuration) do |record, attr_name, value|
module Formol
class Post < ActiveRecord::Base
#Security
attr_protected :topic_id, :user_id, :created_by_topic
#Virtual attributes
attr_accessor :created_by_topic, :quote_id, :register_user_as_subscriber
#Default values
default_value_for :created_by_topic, false
@fdutey
fdutey / gist:2358352
Created April 11, 2012 10:04
03.Héritage
/**
Comme nous l'avons vu, il n'y a pas de classe en JavaScript.
La notion même d'héritage tel que conçu de manière traditionnelle n'a donc aucun sens.
Il existe plusieurs façons de concevoir et mettre en oeuvre l'héritage en JS:
* héritage de prototype
* héritage classique
* copie
describe :note_for do
it 'give notes for the project' do
CategoryProject.create(:project => project,
:category => category,
:description => 'test')
params = { :category => category }
project.notes.create params.merge(:value => 8)
2.times{ project.notes.create params.merge(:value => 3) }
@fdutey
fdutey / sum.rb
Last active November 7, 2017 03:22
def parse_arg(arg)
a, b, q = arg.split(' ').map(&:to_i)
[Range.new(a, b), q]
end
inputs = []
while arg = STDIN.gets
inputs << parse_arg(arg)
end
# lib/services/user/signup_service.rb
module Services
module User
class SignUpService
attr_reader :publish_statistics_service,
:send_email_confirmation_service
def initialize(
user_publish_statistics_service:,