59 lines
1.9 KiB
Ruby
59 lines
1.9 KiB
Ruby
File.open(File.join(Rails.root, 'config/database.yml'), 'r') do |f|
|
|
@settings = YAML.load(f)[Rails.env]
|
|
end
|
|
|
|
Mongoid.configure do |config|
|
|
name = @settings["database"]
|
|
host = @settings["host"]
|
|
config.master = Mongo::Connection.new.db(name)
|
|
# config.slaves = [
|
|
# Mongo::Connection.new(host, @settings["slave_one"]["port"], :slave_ok => true).db(name),
|
|
# Mongo::Connection.new(host, @settings["slave_two"]["port"], :slave_ok => true).db(name)
|
|
# ]
|
|
end
|
|
|
|
## various patches
|
|
|
|
|
|
module Mongoid #:nodoc:
|
|
|
|
# Enabling scope in validates_uniqueness_of validation
|
|
module Validations #:nodoc:
|
|
class UniquenessValidator < ActiveModel::EachValidator
|
|
def validate_each(document, attribute, value)
|
|
conditions = { attribute => value, :_id.ne => document._id }
|
|
|
|
if options.has_key?(:scope) && !options[:scope].nil?
|
|
[*options[:scope]].each do |scoped_attr|
|
|
conditions[scoped_attr] = document.attributes[scoped_attr]
|
|
end
|
|
end
|
|
|
|
# Rails.logger.debug "conditions = #{conditions.inspect} / #{options[:scope].inspect}"
|
|
|
|
return if document.class.where(conditions).empty?
|
|
|
|
# if document.new_record? || key_changed?(document)
|
|
document.errors.add(attribute, :taken, :default => options[:message], :value => value)
|
|
# end
|
|
end
|
|
|
|
# protected
|
|
# def key_changed?(document)
|
|
# (document.primary_key || {}).each do |key|
|
|
# return true if document.send("#{key}_changed?")
|
|
# end; false
|
|
# end
|
|
end
|
|
end
|
|
|
|
# FIX BUG #71 http://github.com/durran/mongoid/commit/47a97094b32448aa09965c854a24c78803c7f42e
|
|
module Associations
|
|
module InstanceMethods
|
|
def update_embedded(name)
|
|
association = send(name)
|
|
association.to_a.each { |doc| doc.save if doc.changed? || doc.new_record? } unless association.blank?
|
|
end
|
|
end
|
|
end
|
|
end |