* Add: #483 特定の公開範囲を無効にするオプション * Fix test partically * Complete
This commit is contained in:
parent
7f9ec2e510
commit
f79fb3adae
24 changed files with 177 additions and 59 deletions
|
@ -14,6 +14,10 @@ module UserSettings::DSL
|
|||
@definitions[key] = @definitions[original_key].inverse_of(key)
|
||||
end
|
||||
|
||||
def setting_inverse_array(key, original_key, reverse_array)
|
||||
@definitions[key] = @definitions[original_key].array_inverse_of(key, reverse_array)
|
||||
end
|
||||
|
||||
def namespace(key, &block)
|
||||
@definitions ||= {}
|
||||
|
||||
|
|
|
@ -22,4 +22,8 @@ class UserSettings::Namespace
|
|||
def setting_inverse_alias(key, original_key)
|
||||
@definitions[key] = @definitions[original_key].inverse_of(key)
|
||||
end
|
||||
|
||||
def setting_inverse_array(key, original_key, reverse_array)
|
||||
@definitions[key] = @definitions[original_key].array_inverse_of(key, reverse_array)
|
||||
end
|
||||
end
|
||||
|
|
|
@ -15,6 +15,12 @@ class UserSettings::Setting
|
|||
self
|
||||
end
|
||||
|
||||
def array_inverse_of(name, arr)
|
||||
@inverse_of_array = name.to_sym
|
||||
@reverse_array = arr
|
||||
self
|
||||
end
|
||||
|
||||
def value_for(name, original_value)
|
||||
value = begin
|
||||
if original_value.nil?
|
||||
|
@ -24,13 +30,21 @@ class UserSettings::Setting
|
|||
end
|
||||
end
|
||||
|
||||
value = value.compact_blank if value.is_a?(Array)
|
||||
|
||||
if !@inverse_of.nil? && @inverse_of == name.to_sym
|
||||
!value
|
||||
elsif !@inverse_of_array.nil? && @inverse_of_array == name.to_sym
|
||||
reverse_array(value)
|
||||
else
|
||||
value
|
||||
end
|
||||
end
|
||||
|
||||
def reverse_array(value)
|
||||
@reverse_array.clone.filter { |v| value.exclude?(v) }
|
||||
end
|
||||
|
||||
def default_value
|
||||
if @default_value.respond_to?(:call)
|
||||
@default_value.call
|
||||
|
@ -39,7 +53,13 @@ class UserSettings::Setting
|
|||
end
|
||||
end
|
||||
|
||||
def array_type?
|
||||
default_value.is_a?(Array) || default_value == []
|
||||
end
|
||||
|
||||
def type
|
||||
return ActiveRecord::Type.lookup(:string, array: true) if array_type?
|
||||
|
||||
case default_value
|
||||
when TrueClass, FalseClass
|
||||
ActiveModel::Type::Boolean.new
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue