landmarks.rb 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. class Landmark < ActiveRecord::Base
  2. validates :name, presence: true
  3. validates :description, presence: true
  4. validates :category, presence: true
  5. before_save :set_default_warning
  6. def set_default_warning
  7. if self.warning.nil?
  8. self.warning = "This is a verified safe location!"
  9. self.w_url = "https://cdn.dribbble.com/users/250235/screenshots/2850450/pokemon_center_1x.png"
  10. self.w_rating = "SFW"
  11. end
  12. end
  13. def self.from_form(app)
  14. key_mapping = {
  15. "Description" => "description",
  16. "Type" => "category",
  17. "Main Region" => "region",
  18. "Parent Landmark" => "location",
  19. "Kinks" => "kink",
  20. "Warning Description" => "warning",
  21. "Warning URL" => "w_url",
  22. "Warning Rating" => "w_rating",
  23. "History" => "history",
  24. "Folklore" => "folk_lore",
  25. "Layout URL" => "layout_url"
  26. }
  27. hash = {
  28. "name" => nil,
  29. "description" => nil,
  30. "category" => nil,
  31. "url" => nil,
  32. "location" => nil,
  33. "region" => nil,
  34. "warning" => nil,
  35. "w_url" => nil,
  36. "kink" => nil,
  37. "layout_url" => nil,
  38. "user_id" => nil,
  39. "w_rating" => nil,
  40. "history" => nil,
  41. "folk_lore" => nil,
  42. "edit_url" => nil
  43. }
  44. user_id = UID.match(app.description)
  45. hash["user_id"] = case app.description
  46. when /server/i
  47. 'Server'
  48. else
  49. user_id[1]
  50. end
  51. hash["name"] = app.title
  52. hash["edit_url"] = app.footer.text
  53. hash["url"] = app.image&.url
  54. app.fields.each do |field|
  55. next if field.nil?
  56. db_column = key_mapping[field.name]
  57. if db_column == "region"
  58. r = Region.find_by(name: field.value)
  59. hash[db_column] = r.id
  60. elsif db_column == "location"
  61. lm = Landmark.find_by(name: field.value)
  62. hash[db_column] = lm.id
  63. elsif db_column == "kink"
  64. hash[db_column] = field.value.split(/,\s?/)
  65. else
  66. hash[db_column] = field.value
  67. end
  68. end
  69. hash = hash.reject { |k,v| k == nil }
  70. hash
  71. end
  72. end